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