#sql #postgresql #check-constraints
#sql #postgresql #проверка-ограничения
Вопрос:
В моей таблице есть столбец, который показывает номер телефона, и я хочу добавить ограничение, при котором этот номер должен быть в определенном формате, например cod.country-cod.local-num.local
. Например: ' 54-351-4350114'
.
И позже я хочу добавить ограничение, в котором num.local
должно быть не менее 7 цифр.
Ответ №1:
Я предполагаю, что вы ищете ограничение CHECK
Postgres: такое ограничение принимает регулярное выражение с 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.
Комментарии:
1. Большое вам спасибо. Возможно ли присвоить имена каждой части телефонного номера? Например:
cod.country-cod.local-num.local