MariaDB условие RLIKE

В этом учебном пособии вы узнаете, как использовать MariaDB условие RLIKE (для сопоставления регулярных выражений) с синтаксисом и примерами.
* Не путать с условием LIKE, которое выполняет простое сопоставление с pattern.

Описание

MariaDB условие RLIKE позволяет выполнить сопоставление регулярного выражения в предложении WHERE оператора SELECT, INSERT, UPDATE или DELETE.

Синтаксис

Синтаксис условия RLIKE в MariaDB:

expression RLIKE pattern

Параметры или аргументы

expression
Символьное выражение, такое как столбец или поле.
pattern
Информация о совпадении регулярного выражения. Это может быть сочетание следующего:

Значение Описание
^ Соответствует началу строки. Если используется с match_parameter, равным 'm', он соответствует началу строки в любом месте expression.
$ Соответствует концу строки. Если используется с match_parameter, равным 'm', он совпадает с концом строки в любом месте внутри expression.
* Совпадает с нулем или более вхождений.
+ Соответствует одному или нескольким вхождениям.
? Соответствует нулю или одному вхождению.
. Соответствует любому символу, кроме NULL.
| Используется как OR указать более одной альтернативы.
[ ] Используется для указания списка совпадений, в котором вы пытаетесь сопоставить любой из символов в списке.
[^ ] Используется для указания несоответствующего списка, в котором вы пытаетесь сопоставить любой символ, кроме тех, что в списке.
( ) Используется для группировки выражений как подвыражения.
{m} Соответствует m раз.
{m,} Совпадает не менее m раз.
{m,n} Соответствует не менее m раз, но не более n раз.
\n n - это число от 1 до 9. Соответствует n-му подвыражению, найденному в () перед тем, как встретить \n.
[..] Соответствует одному элементу сопоставления, который может содержать более одного символа.
[::] Соответствует классу символов.
[==] Соответствует классу эквивалентности.
\d Соответствует цифровому символу.
\D Соответствует нецифровому символу.
\w Соответствует буквенному символу.
\W Соответствует небуквенному символу.
\s Соответствует пробелу.
\S Соответствует непробельному символу.
*? Соответствует предыдущему шаблону ноль или более вхождений.
+? Соответствует предыдущему шаблону одному или нескольким вхождениям.
?? Соответствует предыдущему шаблону ноль или одно вхождение.
{n}? Соответствует предыдущему шаблону n раз.
{n,}? Соответствует предыдущему шаблону не менее n раз.
{n,m}? Соответствует предыдущему шаблону не менее n раз, но не более m раз.

Примечание

  • Условие RLIKE выполняет сопоставление без учета регистра, кроме случаев, когда используется с двоичными строками.
  • Эта страница относится к MariaDB 10.0.5 и выше, использующим библиотеку регулярных выражений PCRE. До MariaDB 10.0.5 условие RLIKE использовало POSIX 1003.2-совместимую библиотеку регулярных выражений.
  • См. также условие LIKE.

Применение

Условие RLIKE можно использовать в следующих версиях MariaDB:

  • MariaDB 10.0.5+

Пример совпадение на нескольких альтернативах

Давайте начнем с рассмотрения того, как использовать шаблон | в условии RLIKE в MariaDB.
Например:

В этом примере RLIKE будут возвращаться все записи таблицы из products с product_name, которые представляют собой Pan, Pen или Pin. Шаблон | подсказывает нам искать букву "a", "e" или "i".

Пример совпадение в начале

Далее, давайте использовать условие RLIKE для сопоставления с началом строки.
Например:

В этом примере RLIKE используется шаблон ^ для сопоставления в начале строки. Он вернет все значения product_id и product_name, где product_name начинается с 'P'.
Поскольку условие RLIKE выполняет сопоставление без учета регистра (кроме двоичной строки), оно будет эквивалентно следующему:

Оба запроса будут возвращать одинаковые результаты.

Пример совпадение в конце

Далее, давайте использовать условие RLIKE для сопоставления в конце строки.
Например:

Этот пример RLIKE использует шаблон $ для сопоставления в конце строки. Он вернет все записи из products, чье product_name оканчивается на 'n'.

Пример несоответствующий список

Далее, давайте используем условие RLIKE для определения несоответствующего списка. Это означает, что вы пытаетесь сопоставить любой символ, кроме тех, что в списке.
Например:

В этом примере шаблон [^] используется для соответствия любому символу, кроме перечисленных. Он вернет все записи из таблицы products, где первый символ product_name - "P", второй - не "a", а третий - "n". Таким образом, это будет включать такие значения, как "Pen", "Pin", "Pon" или "Pun", но исключать значение "Pan" из набора результатов.
Вы можете еще больше усложнить этот пример, добавив более одного символа, чтобы он не совпадал.
Например:

В этом примере будут возвращены все записи из таблицы products, где первым символом product_name является "P", вторым символом не "a" или "i", и третий символ 'n'. Таким образом, это будет включать такие значения, как "Pen", "Pon" или "Pun", но исключать значения "Pan" и "Pin" из набора результатов.

Пример сопоставление классов символов

Далее давайте посмотрим, как использовать условие RLIKE для сопоставления с классами символов в MariaDB.
Вы можете использовать следующие классы символов с условием RLIKE в MariaDB:

Символьный класс Описание
alnum Буквенно-цифровые символы
alpha Буквенные символы
blank Пробельные символы
cntrl Управляющие символы
digit цифры
graph Графические символы
lower Буквенные символы в нижнем регистре
print Графические или пробельные символы
punct Символы пунктуации
space Такие символы, как возврат каретки, перевод строки, пробел и табуляция
upper Прописные буквенные символы
xdigit Шестнадцатеричные цифры

Рассмотрим пример соответствия классов символов с условием RLIKE.
Например:

В этом примере условие RLIKE вернет все записи из таблицы contacts, где адрес начинается с 123, а затем остальные символы являются буквенно-цифровыми символами.

Пример экранированых символов

В последнем примере объясняется, как экранировать специальные символы при использовании условия RLIKE в MariaDB. Чтобы экранировать специальный символ с условием RLIKE, перед специальным символом необходимо поставить две обратные косые черты \\ .
Например:

В этом примере мы экранировали символ (, поэтому условие RLIKE будет возвращать все записи из таблицы products, где product_name содержит символ ( (открывающая скобка).