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

How to alter a column to accept values in some specific format?

我的 table 有一个显示 phone 数字的列,我想添加一个约束条件,该数字必须采用特定格式,例如 +cod.country-cod.local-num.local。例如:'+54-351-4350114'.

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

我猜你正在寻找 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