如何在表中的varchar
列中添加引导零,而我不知道列的长度。如果该列不是零,则我应该添加领先的零。
示例:
345-输出应为0345
4567-输出应为04567
我尝试了:
SELECT lpad(column1,WHAT TO SPECIFY HERE?, '0')
from table_name;
我将在此后运行更新查询。
您可能会对此进行过多思考。使用普通串联:
SELECT '0' || column1 AS padded_col1 FROM table_name;
如果列为null,则什么都没有发生:将任何内容串联到null返回null。
特别是不要使用concat()
。对于空列,您将获得'0',您会做不是 want。
如果您也有空字符串(''
(,则可能需要做更多的事情,具体取决于您想要的。
并且由于您提到了更新表的计划:考虑不是这样做,您正在添加噪声,可以添加这些噪声,以显示简单的表达式。VIEW
可能会派上用场。
如果您的所有varchar
值实际上都是有效的数字,请改用适当的数字数据类型,并格式显示与上面相同的表达式。串联自动产生A text 结果。
如果情况迫使您的手并且需要更新,请考虑以下内容:
UPDATE table_name
SET column1 = '0' || column1
WHERE column1 IS DISTINCT FROM '0' || column1;
添加的WHERE
子句避免了空更新。比较:
- 如何(或我(在多列上选择不同的?
而不是尝试concat
?..
SELECT concat(0::text,column1) from table_name;