PostgreSQL - 正则表达式约束,以便 varchar 仅包含数字
PostgreSQL - regex constraint so that varchar contains only digits
我的 PostgreSQL table 中有一个列用于 phone 个 VARCHAR
类型的数字。我选择了这种数据类型,因为在我的国家 phone 数字以 0 开头。
我需要引入一个约束来检查 phone 号码是否包含 仅 个数字。
这是我目前拥有的:
ALTER TABLE contactInfo ADD CONSTRAINT checkPhone
CHECK(phone NOT SIMILAR TO '%[a-z]%' AND phone SIMILAR TO '%[0-9]%');
它似乎有效,但我担心它不会过滤掉特定于不同语言的字符(如 ù û ü â à 等)。
我该怎么做?
您可以更具体地说您只需要数字:
CHECK(phone ~ '^[0-9]*$')
更短:
CHECK(phone ~ '^\d*$')
如果您不想允许空字符串,请将 qantifier *
(0 个或多个)替换为 +
(至少一个)。
我的 PostgreSQL table 中有一个列用于 phone 个 VARCHAR
类型的数字。我选择了这种数据类型,因为在我的国家 phone 数字以 0 开头。
我需要引入一个约束来检查 phone 号码是否包含 仅 个数字。
这是我目前拥有的:
ALTER TABLE contactInfo ADD CONSTRAINT checkPhone
CHECK(phone NOT SIMILAR TO '%[a-z]%' AND phone SIMILAR TO '%[0-9]%');
它似乎有效,但我担心它不会过滤掉特定于不同语言的字符(如 ù û ü â à 等)。
我该怎么做?
您可以更具体地说您只需要数字:
CHECK(phone ~ '^[0-9]*$')
更短:
CHECK(phone ~ '^\d*$')
如果您不想允许空字符串,请将 qantifier *
(0 个或多个)替换为 +
(至少一个)。