Перейти к содержанию

LIKE

Выражение LIKE используется в SELECT-запросах для проверки соответствия строк шаблону символов c учетом их регистра. При совпадении возвращается true, в противном случае — false. Для проверки подходят только столбцы, имеющие строковый тип данных.

Синтаксис

expression LIKE expression ESCAPE expression

Выражение

Диаграмма

NOT table . column literal case cast current_date like ilike substr to_char to_date trim lower upper NOT EXISTS ( dql ) ( dql ) ( expression , ) IS NOT NULL TRUE FALSE UNKNOWN expression NOT BETWEEN expression AND + - * / <> != >= > <= < = NOT IN || AND OR expression

Литерал

Диаграмма

TRUE FALSE NULL decimal double integer string unsigned $ unsigned ?

Примеры использования

Простая проверка

Пример точного совпадения последовательности символов:

SELECT type LIKE 'light' FROM warehouse;
Результат
+-------+
| col_1 |
+=======+
| false |
|-------|
| false |
|-------|
| true  |
|-------|
| true  |
|-------|
| true  |
+-------+
(5 rows)

Подсчет количества совпадения

Можно также использовать LIKE для подсчета количества совпадений. Пример:

SELECT COUNT(*) FROM warehouse WHERE type LIKE 'light';
Результат
+-------+
| col_1 |
+=======+
| 3     |
+-------+
(1 rows)

Использование подстановочных знаков

Существует два подстановочных знака, которые используются в сочетании с выражением LIKE:

  • %знак процента обозначает любое количество любых символов
  • _подчеркивание обозначает любой один символ

Пример:

SELECT item LIKE '%l%s' OR type LIKE 'ligh_' FROM warehouse;
Результат
+-------+
| col_1 |
+=======+
| false |
|-------|
| true  |
|-------|
| true  |
|-------|
| true  |
|-------|
| true  |
+-------+
(5 rows)

Экранирование

Экранирование необходимо в тех случаях, когда нужно найти в строке буквальное вхождение знака процента или подчеркивания. Для этого перед соответствующим символом в шаблоне нужно добавить спецсимвол. По умолчанию в качестве спецсимвола выбрана обратная косая черта (\):

CREATE TABLE str(n string primary key);
INSERT INTO str VALUES ('product'), ('product%'), ('*product');
SELECT n FROM str WHERE n LIKE 'product\%';
Результат
+------------+
| n          |
+============+
| "product%" |
+------------+
(1 rows)

C помощью предложения ESCAPE можно выбрать и другой спецсимвол (букву, знак пунктуации, но не цифру):

SELECT n FROM str WHERE n like 'product*%' ESCAPE '*';
Результат
+------------+
| n          |
+============+
| "product%" |
+------------+
(1 rows)

Чтобы включить спецсимвол в шаблон поиска, его следует продублировать:

SELECT n FROM str WHERE n like '**product' ESCAPE '*';
Результат
+------------+
| n          |
+============+
| "*product" |
+------------+
(1 rows)