Во-первых, использование like
для точных совпадений является неоптимальным. Можно также использовать =
, и если вы это сделаете, вы можете использовать синтаксис IN
:
select * from xxx
where tags IN ('oscar', 'rahman', 'slumdog')
Я предполагаю, что вы ищете не точное совпадение, а запись, в которой поле tags
содержит всех тегов.
Это было бы что-то вроде этого:
select * from xxx
where tags like '%oscar%'
and tags like '%rahman%'
and tags like '%slumdog%'
Это не будет очень быстрым или производительным, хотя.
Подумайте о том, чтобы перенести такую логику в ваше приложение, где это быстрее и проще сделать.
Edit:
После комментариев - существует множество примеров того, как разобрать с разделителями строк . Вы можете поместить их в таблицу и использовать dynamic sql для генерации вашего запроса.
Но это будет иметь плохую производительность, и SQL Server не сможет кэшировать планы запросов для такого рода вещей. Как я уже говорил выше - подумайте о том, чтобы перенести эту логику на уровень приложений.