我是PostgreSQL的新手,我知道如何在SQL Server中向左填充一个数字,但我在PostgreSQL中很难弄清楚这一点。
我有一个数字列,其中最大位数为3,最小位数为1:如果它是一位数,它的左边有两个零,如果它是两位数,它的左边有1,例如001,058,123。
在SQL Server中,我可以使用以下命令:
RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]
字符串
这在PostgreSQL中不存在。任何帮助都将不胜感激。
5条答案
按热度按时间4xy9mtcn1#
你可以使用
rpad
和lpad
函数分别将数字填充到右边或左边。请注意,这不能直接对数字起作用,所以你必须使用::char
或::text
来转换它们:字符串
yiytaume2#
to_char()
函数用于格式化数字:字符串
fm
前缀(“填充模式”)避免了varchar中的前导空格。000
只是定义了你想要的数字个数。型
有关格式图片的更多详细信息,请参阅手册:
http://www.postgresql.org/docs/current/static/functions-formatting.html
ffdz8vbo3#
那么容易
字符串
参考文献:
sqlfiddle:http://sqlfiddle.com/#!15/d41d8/3665
rryofs0p4#
最简单的方法:
字符串
gkn4icbw5#
我对
LPAD
和TO_CHAR
很失望,因为如果你的字符串超过最小长度,它们就不工作了。我不能说这有多高效,但是你可以把FORMAT
链起来,给予你一个最小长度的字符串,然后用REPLACE
把所有空格替换为零。字符串
与其他方法
TO_CHAR
相比:型
(注意最后一个值是
###
而不是1000
)LPAD
:型
(注意最后一个值是
100
而不是1000
)还有其他方法涉及使用
CASE
,但我喜欢REPLACE
和FORMAT
组合不需要任何变量重复。