9

如何在 PostgreSQL 中创建前导零序列?

对于 MySQL,我知道它是BIGINT(10) UNSIGNED ZEROFILL AUTO_INCREMENT,但在 PostgreSQL 中我找不到等价物(仅bigserial)。

此外,如何将零的数量限制为BIGINT(10)10 个符号,该类型bigserial是否有这样的限制?

4

2 回答 2

13

创建一个常规序列,然后使用 to_char() 用前导零填充它。您的数据类型将是 char(),但是 Postgres 不支持整型的 zerofill。

于 2011-07-28T17:22:27.673 回答
10

to_char()“填充前导零”任务的一个很好的替代方法是lpad()

create table TableName(columnName serial primary key);

select lpad(columnName::text, 3, '0'), * from TableName;

注意:lpad()溢出时不会产生错误,例如:

select lpad(4444::text, 3, '0'), to_char(4444, '000')
于 2013-06-07T16:27:50.800 回答