Как проверить, содержит ли VARCHAR хотя бы одну заглавную букву - PostgreSQL - PullRequest
0 голосов
/ 07 января 2020

Я хочу проверить, содержит ли мой VARCHAR(30) code более 10 букв и хотя бы одну заглавную букву. Вот как я написал это:

 code VARCHAR(30) CHECK(char_length(code) > 10 AND code LIKE '?=.*[A-Z]')

Я использовал ?=.*[A-Z] регулярное выражение с положительным взглядом вперед, чтобы проверить, есть ли заглавная буква в моем коде.

Но я постоянно получаю:

ERROR:  new row for relation "vouchercode" violates check constraint "vouchercode_code_check"

Неправильно ли мое регулярное выражение?

1 Ответ

3 голосов
/ 07 января 2020

Вы хотите регистрозависимое регулярное выражение. Это будет:

check (code ~ '[A-Z]')

По умолчанию ~ чувствителен к регистру. Для версии без учета регистра вы должны использовать ~*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...