2013-02-17 2 views
-1

Я пытаюсь реализовать домен, чтобы проверить правильные почтовые индексы для Канады. Я написал следующее, но я получил ошибку ограничения. Не могли бы вы рассказать мне, где я могу ошибаться? Я был бы очень признателен.Postgresql - Домен для канадского почтового индекса

CREATE DOMAIN can_postal_code varchar(6) 
CONSTRAINT valid_postal_code 
CHECK (VALUE ~ '^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]\d[ABCEGHJKLMNPRSTVWXYZ]\d$'); 
+0

Что версия PostgreSQL? –

+0

это моя версия postgresql – ueg1990

ответ

1

Для PostgreSQL up to 9.0 использование доллара процитировать:

CHECK (VALUE ~ 
    $regex$^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]\d[ABCEGHJKLMNPRSTVWXYZ]\d$$regex$ 
); 
+0

Что означает $ regex $ в этом выражении? что я хочу использовать регулярное выражение? – ueg1990

+0

Вы можете использовать любую строку внутри двойного доллара, включая пустую. Это просто отличие от любой другой пары внутри вашей строки. Это произойдет в конце строки, где у вас конец строки, соответствующий доллару. –

+0

@ ueg1990, проверьте [this] (http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING) статью в документах. – vyegorov

Смежные вопросы