Перейти к содержимому
Последнее обновление

Операторы сопоставления с шаблоном

Описание​

Операторы сопоставления с шаблоном используются для сравнения данных символьных типов.

Обзор операторов​

ОператорФункцияПример
<char1> [NOT] LIKE <char2>Возвращает TRUE, если <char1> соответствует шаблону <char2> (или не соответствует ему, если указан NOT). В <char2> символ % соответствует нулю или нескольким произвольным символам (за исключением пустой строки). Символ _ соответствует любому одиночному символу. Если перед подстановочным символом стоит символ экранирования, подстановочный символ трактуется как обычный символ.SELECT 'ABCD' LIKE '%C_'
<char1> [NOT] {REGEXP | RLIKE} <char2>Возвращает TRUE, если <char1> соответствует шаблону <char2> (или не соответствует ему, если указан NOT). Подробные правила использования регулярных выражений приведены ниже в разделе REGEXP.SELECT 'ABCD' REGEXP 'A.*D'

LIKE​

Условие LIKE задаёт проверку соответствия шаблону. Оператор сравнения на равенство (=) проверяет точное совпадение одного символьного значения с другим, а условие LIKE ищет в первом символьном значении шаблон, заданный вторым символьным значением.

Синтаксис:

<char1> [ NOT ] LIKE <char2> [ ESCAPE 'char_escape' ]

Здесь:

  • char1 — символьное выражение (например, символьный столбец), называемое значением для поиска.
  • char2 — символьное выражение, обычно строковый литерал, называемое шаблоном.
  • char_escape (необязательный параметр) — символьное выражение длиной 1 символ (в кодировке ascii). Оно позволяет задать символ экранирования. Если char_escape не указан, по умолчанию символом экранирования служит ' \ '.

Оба символьных выражения (char1, char2) могут иметь тип данных CHAR, VARCHAR или STRING. Если их типы различаются, Doris преобразует оба выражения в VARCHAR или STRING.

Шаблоны могут содержать специальные символы сопоставления:

  • Знак подчёркивания (_) в шаблоне соответствует ровно одному символу в значении.
  • Знак процента (%) в шаблоне может соответствовать нулю или нескольким символам в значении. Шаблон % не соответствует NULL.

Пример​

select "%a" like "\%_";

Результат приведён ниже. Поскольку "%" — специальный символ, для корректного сопоставления его необходимо экранировать как "%".

+-----------------+
| "%a" like "\%_" |
+-----------------+
| 1 |
+-----------------+
select "%a" like "a%_" ESCAPE "a";

Отличие от предыдущего примера заключается в том, что символом экранирования назначен "a".

+----------------------------+
| "%a" like "a%_" ESCAPE "a" |
+----------------------------+
| 1 |
+----------------------------+

REGEXP (RLIKE)​

REGEXP похож на условие LIKE, но выполняет сопоставление с регулярным выражением, тогда как LIKE использует простое сопоставление с шаблоном. Для проверки строк это условие использует набор входных символов, определяемый символом.

Синтаксис:

<char1> [ NOT ] { REGEXP | RLIKE } <char2>

Здесь:

  • char1 — символьное выражение (например, символьный столбец), называемое значением для поиска.
  • char2 — символьное выражение, обычно строковый литерал, называемое шаблоном.

Оба символьных выражения (char1, char2) могут иметь тип данных CHAR, VARCHAR или STRING. Если их типы различаются, Doris преобразует оба выражения в VARCHAR или STRING.