Операторы сопоставления с шаблоном
Описание
Операторы сопоставления с шаблоном используются для сравнения данных символьных типов.
Обзор операторов
| Оператор | Функция | Пример |
|---|---|---|
<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.