在 postgreSQL 中向左填充零

我对 PostgreSQL 相对比较陌生,我知道如何在 SQL Server 中用零填充一个数字,但我在 PostgreSQL 中很难搞清楚这一点。

我有一个数字列,最大数字是3,最小数字是1: 如果是一个数字,它的左边有两个零; 如果是两个数字,它的左边有1,例如001,058,123。

在 SQLServer 中,我可以使用以下内容:

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

这在 PostgreSQL 中不存在。如果您能提供帮助,我将不胜感激。

148600 次浏览

可以使用 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前缀(“ fill mode”)避免了结果 varchar 中的前导空格。000简单地定义了您希望拥有的位数。

psql (9.3.5)
Type "help" for help.


postgres=> with 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 rows)


postgres=>

有关格式图片的详细信息,请参阅手册:
Http://www.postgresql.org/docs/current/static/functions-formatting.html

最简单的方法:

ltrim(to_char(Column1, '000'))