INITCAP в ограничении MariaDB - PullRequest
0 голосов
/ 09 февраля 2020

В настоящее время я пытаюсь создать ограничение в MariaDB, которое проверяет, что после каждого пробела есть заглавная буква (просто для проверки правильного формата имени человека), и я пытался с INITCAP, но он не позволяет мне это сделать в чеке. Не могли бы вы помочь мне сделать это?

pepe Antonio -> It shouldn't go in
Pepe antonio -> It shouldn't go in
Pepe Antonio -> It should go in

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020

Вы можете использовать:

name not regexp binary '(^| )[[:lower:]]'

Здесь - это db <> скрипка.

binary - потому что более свежие версии MariaDB имеют регистр нечувствительное совпадение регулярных выражений. И вы явно заботитесь о деле.

Как это работает:

'(^| )[[:lower:]]'
--^ beginning of string
----^ space
-----^ expression has either one
------^ followed by a lower-case character

Конечно, это то, что вы НЕ хотите. Следовательно, NOT REGEXP.

0 голосов
/ 09 февраля 2020

Мы можем использовать REGEXP здесь со следующим шаблоном регулярных выражений:

^[A-Z][a-z]*(?: [A-Z][a-z]*)*$

SELECT *
FROM yourTable
WHERE some_column REGEXP '^[A-Z][a-z]*(?: [A-Z][a-z]*)*$';

Перейдите по ссылке ниже, чтобы увидеть работающую демонстрацию регулярных выражений с примерами ввода:

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

Если вы ожидаете, что имена могут содержать что-то отличное от заглавных и строчных букв, мы можем изменить шаблон.

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