Оператор 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   |
    +---------+