在postgreSQL中向左填充零

我对PostgreSQL相对来说比较新,我知道如何在SQL Server的左边填一个零,但是我正努力在PostgreSQL中弄清楚这一点。

我有一个数字列,其中最大位数为3,最小为1:如果是一位数字,则左边有两个零,如果是两位数字,则有1位,例如001,058,123。

在SQL Server中,我可以使用以下方法:

RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2] 

这在PostgreSQL中不存在。 任何帮助,将不胜感激。

您可以使用rpadlpad函数分别向右或向左填充数字。 请注意,这不会直接在数字上工作,所以您必须使用::char::text来施放它们:

 SELECT RPAD(numcol::text, 3, '0'), -- Zero-pads to the right up to the length of 3 LPAD(numcol::text, 3, '0'), -- Zero-pads to the left up to the length of 3 FROM my_table 

to_char()函数用于格式化数字:

 select to_char(column_1, 'fm000') as column_2 from some_table; 

fm前缀避免了生成的varchar中的前导空格。 000简单地定义你想要的数字的数量。

 psql(9.3.5)
input“help”寻求帮助。

 postgres => sample_numbers(nr)as(
 postgres(> values(1),(11),(100)
 postgres(>)
 postgres-> select to_char(nr,'fm000')
 postgres-> from sample_numbers;
  TO_CHAR
 ---------
  001
  011
  100
 (3排)

 postgres的=> 

有关格式图片的更多细节,请参阅手册:
http://www.postgresql.org/docs/current/static/functions-formatting.html

一样容易

 SELECT lpad(42::text, 4, '0') 

参考文献:

sqlfiddle: http ://sqlfiddle.com/#!15/d41d8/3665