SELECT d.id, d.email
FROM data d
INNER JOIN errors e ON d.email LIKE '%' + e.error
Это возможно, однако выполнение команды LIKE с подстановочным знаком в начале сопоставляемого значения предотвратит использование индекса, что может привести к снижению производительности.
Оптимальным подходом было бы определить вычисляемый столбец в таблице данных, то есть ОБРАТНУЮ область поля электронной почты, и проиндексировать его. Это превратит приведенный выше запрос в условие LIKE с подстановочным знаком в конце, например:
SELECT d.id, d.email
FROM data d
INNER JOIN errors e ON d.emailreversed LIKE REVERSE(e.error) + '%'
В этом случае производительность будет лучше, поскольку это позволит использовать индекс.
Я написал в блоге полное описание этого подхода некоторое время назад здесь .