如何在 PostgreSQL 中创建前导零序列?
对于 MySQL,我知道它是BIGINT(10) UNSIGNED ZEROFILL AUTO_INCREMENT
,但在 PostgreSQL 中我找不到等价物(仅bigserial
)。
此外,如何将零的数量限制为BIGINT(10)
10 个符号,该类型bigserial
是否有这样的限制?
如何在 PostgreSQL 中创建前导零序列?
对于 MySQL,我知道它是BIGINT(10) UNSIGNED ZEROFILL AUTO_INCREMENT
,但在 PostgreSQL 中我找不到等价物(仅bigserial
)。
此外,如何将零的数量限制为BIGINT(10)
10 个符号,该类型bigserial
是否有这样的限制?
创建一个常规序列,然后使用 to_char() 用前导零填充它。您的数据类型将是 char(),但是 Postgres 不支持整型的 zerofill。
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')