MySQL предлагает возможность использовать регулярные выражения для выполнения сложного поиска по вашим данным. Регулярное выражение — это инструмент, который обеспечивает краткий и гибкий способ идентификации строк текста на основе пользовательских шаблонов.
В этой статье мы обсудим операторы регулярных выражений MySQL, рассмотрим их использование и синтаксис, а также определим конструкции и специальные символы, которые можно использовать в регулярном выражении MySQL, а также приведем несколько примеров их использования.
Операторы регулярных выражений MySQL
Следующие операторы используются в MySQL для выполнения операций с регулярными выражениями. Они используются в предложении WHERE, аналогичном известному и часто используемому оператору LIKE.
- REGEXP : оператор сопоставления с образцом для использования регулярных выражений.
- НЕ REGEXP : отрицание оператора REGEXP.
- RLIKE : синоним оператора REGEXP.
Синтаксис регулярных выражений MySQL
Основной синтаксис, используемый для операций с регулярными выражениями MySQL:
-- For the REGEXP Operator SELECT {COLUMN_NAME} FROM {TABLE_NAME} WHERE {COLUMN_NAME} REGEXP '{REGEXP_PATTERN}'; -- For the NOT REGEXP Operator SELECT {COLUMN_NAME} FROM {TABLE_NAME} WHERE {COLUMN_NAME} NOT REGEXP '{REGEXP_PATTERN}'; -- For the RLIKE Alias Operator SELECT {COLUMN_NAME} FROM {TABLE_NAME} WHERE {COLUMN_NAME} RLIKE '{REGEXP_PATTERN}';
Чтобы предоставить более подробный, но простой пример операции с регулярными выражениями MySQL, сделайте следующее утверждение. Он извлечет все столбцы каждой записи в таблице PRICE, где PRICELIST_ID соответствует указанному шаблону (начинается с числового диапазона 0-9, встречающегося один или несколько раз, за которым следует ‘_’ (подчеркивание), а затем последовательность символов ‘ДОЛЛАР США’.
SELECT * FROM PRICE WHERE PRICELIST_ID REGEXP '^[0-9]+_USD';
Другой пример операции с регулярным выражением MySQL может быть показан в следующем утверждении. Он извлечет все столбцы каждой записи из таблицы PRICE, где PRICE_ID совпадает с указанным шаблоном (начинается с O, затем следует ‘_’ (подчеркивание), затем числовой диапазон 0-9 встречается один или несколько раз, а затем следует и ‘_’ (подчеркивание), затем заканчивается либо последовательностью символов USD, либо BRA.
SELECT * FROM PRICE WHERE PRICE_ID REGEXP '^O_[0-9]+_[USD|BRA]';
MySQL REGEXP конструкции и специальные символы
Регулярное выражение MySQL может использовать любую из следующих конструкций и специальных символов для создания шаблона для использования с операторами REGEXP. Отображается конструкция или специальный символ, а затем описание каждого и какие операции выполняются в шаблоне для регулярного выражения.
- ^ : Сопоставить начало строки.
- $ : Соответствует концу строки.
- , Соответствует любому символу (включая символы возврата каретки и перевода строки).
- * : любую последовательность из нуля или болеесимволов.
- + : любая последовательность одного или более через символы.
- а ? : Матч либо ноль или один через символы.
- де | abc : соответствует любой последовательности символов, de или abc .
- ( abc ) * : сопоставить ноль или более экземпляров последовательности символов abc .
- {1}, {2,3} : предоставляет более общий способ написания регулярных выражений, которые соответствуют множеству вхождений предыдущего атома (или «части») шаблона. т.е. ? можно записать в виде в {0,1}.
- [ А-йХ ], [^ а-йХ ] : соответствует любому символу , который является (или нет, если используется ^) либо а , б , гр , д , или X . Символ «-» между двумя другими символами образует диапазон, который сопоставляет все символы от первого символа до второго.
- [. символы .] : в выражении в скобках (используя «[» и «]») соответствует последовательности символов этого элемента сортировки. то есть шаблон [[.period.]] будет соответствовать ‘.’ (точка) характер.
- [= character_class =] : в выражении в скобках представляет класс эквивалентности. Соответствует всем символам с одинаковым значением сортировки, включая себя.
- [: character_class :] : в выражении в скобках представляет класс символов, который соответствует всем символам, принадлежащим этому классу. то есть шаблон [[: alpha:]] будет сопоставляться со строкой, состоящей из всех буквенных символов.
- [[: <:]], [[:>:]] : Эти маркеры обозначают границы слов и, соответственно, соответствуют началу и концу слов соответственно.
* ПРИМЕЧАНИЕ . MySQL интерпретирует символ «\» (обратную косую черту) как escape-символ. Если вы решите использовать символ «\» в качестве части вашего шаблона в регулярном выражении, ему нужно экранировать с помощью другой обратной косой черты «\\».
Для получения дополнительной документации по оператору регулярных выражений MySQL, пожалуйста, посетите Регулярные выражения в Справочном руководстве MySQL (v5.1 в настоящее время связано).