9

PostgreSQLで先行ゼロシーケンスを作成するにはどうすればよいですか?

MySQLの場合はわかっていますBIGINT(10) UNSIGNED ZEROFILL AUTO_INCREMENTが、PostgreSQLでは同等のものが見つかりません(のみbigserial)。

BIGINT(10)さらに、ゼロの数を10シンボルを意味するように制限するにはどうすればよいですか?タイプbigserialにはそのような制限がありますか?

4

2 に答える 2

13

通常のシーケンスを作成し、to_char()を使用して先行ゼロを埋め込みます。データ型はchar()になりますが、Postgresは整数型のゼロフィルをサポートしていません。

于 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 に答える