Как создать ведущую нулевую последовательность PostgreSQL (zerofill) - PullRequest
4 голосов
/ 28 июля 2011

Как я могу создать начальную нулевую последовательность в PostgreSQL?

Для MySQL я знаю, что это BIGINT(10) UNSIGNED ZEROFILL AUTO_INCREMENT, но в PostgreSQL я не могу найти эквивалент (только bigserial).

Кроме того, как я могу ограничить количество нулей, поскольку BIGINT(10) означает 10 символов, имеет ли тип bigserial такой предел?

Ответы [ 2 ]

8 голосов
/ 07 июня 2013

Хорошей альтернативой 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')
7 голосов
/ 28 июля 2011

Создайте регулярную последовательность, затем используйте to_char (), чтобы заполнить ее начальными нулями. Ваш тип данных будет char (), однако Postgres не поддерживает zerofill для целочисленных типов.

...