在 postgreSQL 中向左填充零

Posted

技术标签:

【中文标题】在 postgreSQL 中向左填充零【英文标题】:Padding zeros to the left in postgreSQL 【发布时间】:2014-12-10 08:19:42 【问题描述】:

我对 PostgreSQL 比较陌生,我知道如何在 SQL Server 中用零填充一个数字,但我在 PostgreSQL 中很难解决这个问题。

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

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

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

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

【问题讨论】:

使用谷歌正是我找到这个页面的方式。这是我在 Google 上排名第一的结果。 to_char(number) function in postgres的可能重复 说到SQL Server,他们有format()功能,可以让你使用format(Column1,'000') as Column2 【参考方案1】:

很简单

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

参考资料:

http://www.postgresql.org/docs/current/static/functions-string.html

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

【讨论】:

FWIW,看起来 Postgres 在 9.1 中添加了 right()【参考方案2】:

您可以使用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

【讨论】:

@EvanCarroll 这是正确的答案——你在说什么? @Yarin this answer 是带有格式字符串的标准化函数调用方法。使用 RPAD/LPAD,您将转换为字符串,然后处理字符串。使用 to_char,您只是指定了一种不同的字符串化方法。 @EvanCarroll 它们都很有用 - 这个可以让您指定字符串长度的数字 - 另一个需要知道“fm”代表填充模式并让您指定格式图片 警告:与经典的printf 不同,如果您的字符串不合适,这些笨拙的函数会默默地将您的字符串剪裁到合适的大小。所以你可能需要一个case when length(foo) ...【参考方案3】:

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

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

fm 前缀(“填充模式”)避免了生成的 varchar 中的前导空格。 000 只是定义了你想要的位数。

psql (9.3.5) 键入“帮助”以获得帮助。 postgres=> with sample_numbers (nr) as ( postgres(> 值 (1),(11),(100) postgres(>) postgres-> 选择 to_char(nr, 'fm000') postgres-> 来自 sample_numbers; to_char --------- 001 011 100 (3 行) postgres=>

更多格式图片请看说明书:http://www.postgresql.org/docs/current/static/functions-formatting.html

【讨论】:

如果数字太长,to_char 将其转换为###。 O.o 我很好奇是否有解决方案,如果 # 如果比 to_Char 中指定的时间长,它会转换为 ###。无论如何要指定最小的零个数,然后从中增长更大的数字吗?例如,如果您为 lpad 指定 3,则数字将被格式化为 001 010 100 .. 1001【参考方案4】:

最简单的方法:

ltrim(to_char(Column1, '000'))

【讨论】:

以上是关于在 postgreSQL 中向左填充零的主要内容,如果未能解决你的问题,请参考以下文章

MySQL向左,PostgreSQL向右:平安科技在金融应用的技术选型

通过 Dockerized Spring Boot 应用程序填充 Dockerized PostgreSQL 数据库

从 Postgres 数据库填充 jTable

Hammer.js 在 Angular 中向左滑动手势动画

在pycharm编辑器中向左滑动选中的代码

在 Postgres 中向 JSON 对象添加元素