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
);