如何在 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')