在postgreSQL中向左填充零
我对PostgreSQL相对来说比较新,我知道如何在SQL Server的左边填一个零,但是我正努力在PostgreSQL中弄清楚这一点。
我有一个数字列,其中最大位数为3,最小为1:如果是一位数字,则左边有两个零,如果是两位数字,则有1位,例如001,058,123。
在SQL Server中,我可以使用以下方法:
RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]
这在PostgreSQL中不存在。 任何帮助,将不胜感激。
您可以使用rpad
和lpad
函数分别向右或向左填充数字。 请注意,这不会直接在数字上工作,所以您必须使用::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