Spec-Zone.ru › MariaDB

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 |
+-----------------------+ 
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в данном контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/regexp/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API