Task Livecoding SQL Match Strings With Masks

34. Строки, соответствующие любому шаблону #

Условие задачи:
📌 Есть две таблицы:

  • t1(str) – содержит строки
  • t2(mask) – содержит шаблоны для LIKE

Необходимо выбрать все строки из t1, которые соответствуют хотя бы одному шаблону из t2 с помощью SQL LIKE.

Спойлеры к решению
Подсказки
💡 Используйте JOIN по условию t1.str LIKE t2.mask, чтобы отфильтровать подходящие строки.
💡 Можно удалить дубликаты с помощью DISTINCT, если одна строка подходит под несколько шаблонов.
💡 Вариант с EXISTS помогает избежать дублирования и читабелен для проверки “хотя бы одного” шаблона.
Решение
-- Решение 1: JOIN + DISTINCT
SELECT DISTINCT t1.str
FROM t1
JOIN t2
  ON t1.str LIKE t2.mask;

-- Решение 2: EXISTS
SELECT t1.str
FROM t1
WHERE EXISTS (
    SELECT 1
    FROM t2
    WHERE t1.str LIKE t2.mask
);