【发布时间】:2017-01-18 19:03:00
【问题描述】:
我想限制一个数字,使其具有严格的 8 位数字......不多也不少。如果数字长度小于 8 位,则有前导零。
ALTER TABLE mytable ADD CONSTRAINT digit_chk CHECK (mynum ~ '[0-9]{8}');
但是,使用上述语法,当我插入一个 9 位数字时不会产生错误:
INSERT INTO mytable (mynum) VALUES ('123456789');
为什么?
我应该注意,当我插入少于 8 位时会产生错误。
【问题讨论】:
-
有一个带有 ` (mynum >=10000000 AND mynum
-
没有。因为数字必须有前导零。
-
填充前导零通常是一种表示功能。但也许不是你的情况。
-
您需要用
^和$将正则表达式括起来,如下所示:'^[0-9]{8}$'。但是您不应该在这里真正使用正则表达式。只需使用integer作为类型并对其使用mynum BETWEEN 0 AND 99999999约束。
标签: postgresql