当列的长度未知时,如何添加引导零



如何在表中的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;

相关内容

  • 没有找到相关文章

最新更新