REGEXP
Синтаксис
expr REGEXP pat, expr RLIKE pat
Описание
Выполняет сопоставление шаблона с выражением строки expr по образцу pat. Шаблон может быть расширенным регулярным выражением. Подробную информацию о синтаксисе регулярных выражений см. в разделе Обзор регулярных выражений (см. также Регулярные выражения PCRE).
Возвращает 1 если expr соответствует pat или 0 в противном случае. Если либо expr или pat равны NULL, результат равен NULL.
Существует также отрицательная форма NOT REGEXP, являющаяся псевдонимом для NOT (string REGEXP pattern). RLIKE и NOT RLIKE — синонимы для REGEXP и NOT REGEXP, изначально предоставленные для совместимости с mSQL.
Шаблон не обязательно должен быть строкой. Например, он может быть указан как строковое выражение или столбец таблицы.
Примечание: поскольку MariaDB использует синтаксис экранирования C в строках (например, "\n" для представления символа новой строки), необходимо удваивать любой "\" в строках REGEXP.
REGEXP нечувствителен к регистру, за исключением случаев использования бинарных строк.
MariaDB 10.0.5 перешёл к библиотеке регулярных выражений PCRE — см. Регулярные выражения PCRE для улучшений REGEXP, внедрённых в MariaDB 10.0.5.
Переменная default_regex_flags решает оставшиеся совместимости между PCRE и старой библиотекой регулярных выражений.
Примеры
SELECT 'Monty!' REGEXP 'm%y%%'; +-------------------------+ | 'Monty!' REGEXP 'm%y%%' | +-------------------------+ | 0 | +-------------------------+ SELECT 'Monty!' REGEXP '.*'; +----------------------+ | 'Monty!' REGEXP '.*' | +----------------------+ | 1 | +----------------------+ SELECT 'new*\n*line' REGEXP 'new\\*.\\*line'; +---------------------------------------+ | 'new*\n*line' REGEXP 'new\\*.\\*line' | +---------------------------------------+ | 1 | +---------------------------------------+ SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A'; +----------------+-----------------------+ | 'a' REGEXP 'A' | 'a' REGEXP BINARY 'A' | +----------------+-----------------------+ | 1 | 0 | +----------------+-----------------------+ SELECT 'a' REGEXP '^[a-d]'; +---------------------+ | 'a' REGEXP '^[a-d]' | +---------------------+ | 1 | +---------------------+
Примеры default_regex_flags
MariaDB 10.0.11 ввела переменную default_regex_flags для решения оставшихся проблем совместимости между PCRE и старой библиотекой регулярных выражений.
По умолчанию (сопоставление по нескольким строкам отключено)
SELECT 'a\nb\nc' RLIKE '^b$'; +---------------------------+ | '(?m)a\nb\nc' RLIKE '^b$' | +---------------------------+ | 0 | +---------------------------+
Включение многострочного режима с использованием синтаксиса опций PCRE:
SELECT 'a\nb\nc' RLIKE '(?m)^b$'; +---------------------------+ | 'a\nb\nc' RLIKE '(?m)^b$' | +---------------------------+ | 1 | +---------------------------+
Включение многострочного режима с использованием default_regex_flags
SET default_regex_flags='MULTILINE'; SELECT 'a\nb\nc' RLIKE '^b$'; +-----------------------+ | 'a\nb\nc' RLIKE '^b$' | +-----------------------+ | 1 | +-----------------------+
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/regexp/