Оператор LIKE
Описание
Выражение с оператором LIKE
возвращает TRUE
, если текстовая строка соответствует заданному шаблону.
Если шаблон не содержит знаков процента или подчеркивания, то он интерпретируется буквально, и в этом случае LIKE
действует как оператор равенства:
SELECT
'Tengri' LIKE 'Tengri' AS result;
+--------+
| result |
+--------+
| true |
+--------+
Если в шаблоне есть специальные символы, то он интерпретируется не буквально, а как регулярное выражение:
-
Подчеркивание
_
в шаблоне соответствует любому отдельному символу. -
Знак процента
%
в шаблоне соответствует любой последовательности из нуля или более символов.
Сопоставление шаблона LIKE
всегда применяется ко всей строке. Поэтому, если требуется сопоставить последовательность в любом месте строки (накрыть шаблоном подстроку), то шаблон должен начинаться и заканчиваться знаком процента %
.
Можно также использовать противоположные по значению выражения <string> NOT LIKE <pattern>
и NOT string LIKE <pattern>
:
SELECT
NOT 'Tengri' LIKE 'Tengri' AS result_1,
'Tengri' NOT LIKE 'Tengri' AS result_2;
+----------+----------+
| result_1 | result_2 |
+----------+----------+
| false | false |
+----------+----------+
Оператор ILIKE
Оператор ILIKE
можно использовать вместо LIKE
, чтобы сделать сопоставление нечувствительным к регистру:
SELECT
'Tengri' ILIKE 'tengri' AS result_1,
'Tengri' ILIKE '%NGRi' AS result_2;
+----------+----------+
| result_1 | result_2 |
+----------+----------+
| true | true |
+----------+----------+
Примеры
-
Покажем несколько примеров работы шаблонов
LIKE
:SELECT 'Tengri' LIKE 'TNGRi' AS result_1, 'Tengri' LIKE 'T%' AS result_2, 'TNGRi' LIKE 'T%' AS result_3, 'Tengri' LIKE 'T_____' AS result_4;
+----------+----------+----------+----------+ | result_1 | result_2 | result_3 | result_4 | +----------+----------+----------+----------+ | false | true | true | true | +----------+----------+----------+----------+
-
Выберем из таблицы столиц страны, в которых столица начинается на
M
:CREATE TABLE capitals (country VARCHAR, capital VARCHAR); INSERT INTO capitals VALUES ('Russia', 'Moscow'), ('Italy', 'Rome'), ('Spain', 'Madrid'), ('France', 'Paris'); SELECT country FROM capitals WHERE capital LIKE 'M%';
+---------+ | country | +---------+ | Russia | +---------+ | Spain | +---------+