33. Строки, соответствующие любому шаблону #
Условие задачи:
📌 Есть две таблицы:
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
);