如何更改列以接受某些特定格式的值?
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.
根据您的具体要求自由调整正则表达式
我的 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.