如何将前导零添加到表格中的varchar
列,我不知道列的长度。如果列不为null,那么我应该添加一个前导零。
345 - 输出应为0345
4567 - 输出应为04567
我试过了:
SELECT lpad(column1,WHAT TO SPECIFY HERE?, '0')
from table_name;
我得到这个后会运行更新查询。
答案 0 :(得分:2)
你可能会过度思考这个问题。使用简单连接:
SELECT '0' || column1 AS padded_col1 FROM table_name;
如果列为NULL,则不会发生任何事情:将任何内容连接到NULL将返回NULL。
特别是,请勿使用concat()
。你会得到' 0' 的NULL列,你不想要的。
如果您还有空字符串(''
),则可能需要执行更多操作,具体取决于您的需要。
并且由于您提到了更新表的计划:考虑不这样做,您正在添加噪声,可以添加噪声,以便使用简单表达式进行显示。 VIEW
可能会派上用场。
如果您的所有varchar
值实际上都是有效数字,请使用适当的numeric data type代替并使用与上面相同的表达格式进行显示。连接自动生成文本结果。
如果情况迫使你的手需要更新,请考虑以下事项:
UPDATE table_name
SET column1 = '0' || column1
WHERE column1 IS DISTINCT FROM '0' || column1;
添加的WHERE
子句以避免空更新。比较:
答案 1 :(得分:0)
尝试concat
而不是?..
SELECT concat(0::text,column1) from table_name;