我有一个tattoo
类型的列varchar(20)
。我希望用3个零填充左边。 N009应该成为000N009。
to_char(integer/double precsion/int/timestamp,text)
但我们有什么方法可以对varchar
进行此操作吗?
将varchar(20)
投放到integer
也没有效果。我的一些代码在下面添加:
select tattoo,to_char(tattoo,'0000FM')::varchar as tm from animals where soc_code = 'AURO' limit 100
select tattoo,to_char(tattoo::integer,'0000FM')::varchar as tm from animals where soc_code = 'AURO' limit 100
select tattoo,to_char(cast(tattoo as integer),'0000FM')::varchar as tm from animals where soc_code = 'AURO' limit 100
它们都会抛出错误,表示整数和function_to_char的输入语法无效。
答案 0 :(得分:1)
我希望用3个零填充左边。 N009应该成为000N009。
你可能会过度思考这个问题。只需concatenate:
SELECT '000' || tatoo;
如果tatoo
为NULL
,结果也是如此。
答案 1 :(得分:0)
你试过LPAD()
吗?select LPAD( tattoo, 7, '0' )