如何更改列以接受某些特定格式的值?

问题描述 投票:1回答:1

我的表有一个显示电话号码的列,我想添加一个约束,其中这个数字必须是+cod.country-cod.local-num.local这样的特定格式。例如:'+54-351-4350114'

后来我想添加一个约束,其中num.local必须至少有7位数。

sql postgresql check-constraints
1个回答
1
投票

我想你正在寻找一个Postgres CHECK constraint:这样的约束确实接受了一个正则表达式,使用SIMILAR TO运算符:

ALTER TABLE mytable ADD CONSTRAINT phone_number_check CHECK(
    phone_number SIMILAR TO '\+\d+-\d+-\d{7,}'
)

正则表达式解释:

\+        the + sign
\d+       at least one digit
-         the - sign
\d+       at least one digit
-         the - sign
\d{7,}    at least 7 digits

这将允许像'+54-351-1234567'这样的值,例如拒绝'+54-351-123456'。您可以使用Postgres Regular Expressions自由地将正则表达式调整为您的确切要求。

Demo on DB Fiddle

© www.soinside.com 2019 - 2024. All rights reserved.