You can use this SQL to 'pivot' a comma-separated string into a table;
DECLARE @badData TABLE (id INT NOT NULL, txt NVARCHAR(max));
INSERT INTO @badData
VALUES (1, 'foo,bar,baz'), (2, NULL);;
-- the idea is to recursively 'pop' a value from the start of the string, splitting it into 'head' and 'tail' components
WITH unpacked (id, head, tail)
AS (
SELECT id, LEFT(txt, CHARINDEX(',', txt + ',') - 1), STUFF(txt, 1, CHARINDEX(',', txt + ','), '')
FROM @badData
UNION ALL
SELECT id, LEFT(tail, CHARINDEX(',', TAIL + ',') - 1), STUFF(tail, 1, CHARINDEX(',', tail+ ','), '')
FROM unpacked
WHERE tail > ''
)
SELECT id, head
FROM unpacked
ORDER BY id
You could stick this result into a common table expression, then write a where clause like
select * from tableA where val IN (select head from unpacked)
heavily plagiarised from https://stackoverflow.com/a/5493616/6722