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は整数型のゼロフィルをサポートしていません。
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')