Если вы застряли со структурой таблицы как есть (и я подозреваю, что вы есть), то вам, вероятно, лучше разбить ее на несколько частей. Ваша первая задача - создать функцию, которая может разбивать строки на основе разделителя. Как это сделать, ответили на другой вопрос .
Также было бы полезно, если бы вы создали уточнение для функции разделения, создав одну особенность для поля Ключевые слова в таблице Продукты. Кое-что, где вы можете передать ProductId и заставить его вернуть ключевые слова для этого ProductId.
Оттуда вы можете выбрать интересы, соответствующие данному продукту, например,
SELECT * FROM Interests i
WHERE
(i.Accept = '' AND i.Reject = '')
OR
(
EXISTS (SELECT * FROM Split(',', i.Accept) ia WHERE ia.[Value] IN (ProductKeywords(@ProductId)))
AND
NOT EXISTS (SELECT * FROM Split(',', i.Reject) ir WHERE ir.[Value] IN (ProductKeywords(@ProductId)))
)