ГОСПОДИ! Вы можете русским языком описать задачу?:)
Хранить несколько значений в 1 строке - плохая идея, т.к. для поиска вхождений любого значения ( как я понял - ваш вопрос) нужно разбирать посимвольно хранимую строку и ее сравнивать со множеством. Если бы вы хранили каждый символ отдельно, то искомый запрос выглядел бы так:
SELECT 1 FROM Table as t WHERE t.Value IN ('a','b','s','u','t')
Для твоей задачи нужно написать запрос (функцию, которая будет разбивать строку на символы)
CREATE FUNCTION Split (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
FROM Pieces
)
пример запроса
Дальше бегать можно курсором или именными множествами.
На мой взгляд нужно упростить структуру хранения данных, чтобы не городить семиэтажные запросы.
Последний абзац как не пробовал - не получается понять о чем речь :) :)