LIKE¶
Выражение LIKE
используется в SELECT-запросах для
проверки соответствия строк шаблону символов c учетом их регистра. При
совпадении возвращается true
, в противном случае — false
. Для
проверки подходят только столбцы, имеющие строковый тип
данных.
Синтаксис¶
Выражение¶
Диаграмма
Литерал¶
Диаграмма
Примеры использования¶
Простая проверка¶
Пример точного совпадения последовательности символов:
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)