在Varchar中将零填充到左侧

时间:2017-12-11 03:17:56

标签: postgresql varchar

我有一个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的输入语法无效。

2 个答案:

答案 0 :(得分:1)

  

我希望用3个零填充左边。 N009应该成为000N009。

你可能会过度思考这个问题。只需concatenate

SELECT '000' || tatoo; 

如果tatooNULL,结果也是如此。

答案 1 :(得分:0)

你试过LPAD()

吗?
select LPAD( tattoo, 7, '0' )