Ограничение с помощью регулярного выражения - PullRequest
0 голосов
/ 24 января 2020

В настоящее время я пытаюсь создать регулярное выражение для использования в моих Oracle ограничениях базы данных ', которое может проверить, начинаются ли все слова строки с заглавной буквы. Я уже пытался использовать такие функции, как initcap, но на самом деле он работает не так, как ожидалось, потому что он выдает ошибку, когда я пытаюсь вставить значения, которые содержат букву, например, «-» или акцент. Не могли бы вы помочь мне?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

I думаю, необходимое проверочное ограничение больше похоже на это:

check (not regexp_like(mycol, '(^|\W)[[:lower:]]'))
0 голосов
/ 24 января 2020

Вы можете сделать это с проверочным ограничением и регулярным выражением, например:

alter table mytable
    add constraint myconstraint
    check (not regexp_like(mycol, '(^|\W)[a-z]'))

Regexp (^|\W)[A-Z] означает: начало строки или несловесный символ, за которым следует значение в нижнем регистре , not regexp_like(...) запрещает такой шаблон.

Демонстрация на DB Fiddle


Как прокомментировано @kfinity, вы также можете использовать регулярное выражение (^|\W)[[:lower:]], это должно правильно перехватывать специальные верхние символы.

...