如何创建 PostgreSQL 前导零序列 (zerofill)

发布于 2024-11-26 23:31:47 字数 254 浏览 2 评论 0原文

如何在 PostgreSQL 中创建前导零序列?

对于 MySQL,我知道它是 BIGINT(10) UNSIGNED ZEROFILL AUTO_INCRMENT 但在 PostgreSQL 中我找不到等效项(只有 bigserial)。

此外,我如何限制零的数量,因为 BIGINT(10) 表示 10 个符号,类型 bigserial 有这样的限制吗?

How can I create a leading zero sequence in PostgreSQL?

For MySQL I know it is BIGINT(10) UNSIGNED ZEROFILL AUTO_INCREMENT but in PostgreSQL I can't find an equivalent (only bigserial).

Moreover how can I limit the number of zeroes as BIGINT(10) means 10 symbols, does the type bigserial have such a limit?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

始终不够 2024-12-03 23:31:47

创建一个常规序列,然后使用 to_char() 用前导零填充它。您的数据类型将是 char(),但是 Postgres 不支持整数类型的填零。

Create a regular sequence, then use to_char() to pad it with leading zeroes. Your data type will be char(), though, Postgres does not support zerofill for integral types.

枉心 2024-12-03 23:31:47

在“填充前导零”任务中,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')

A good alternative to to_char() in a "fill leading zeros" task is lpad():

create table TableName(columnName serial primary key);

select lpad(columnName::text, 3, '0'), * from TableName;

Caution: lpad() does not generate an error on overflow, see for example:

select lpad(4444::text, 3, '0'), to_char(4444, '000')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文