Este é mais um exemplo da importância de normalizar seus dados.
Manter vários pontos de dados em uma única coluna quase nunca é o design correto, e por quase nunca quero dizer cerca de 99,9999%.
Se você não puder normalizar seu banco de dados, poderá usar uma solução alternativa como esta:
SELECT *
FROM Projects p
WHERE EXISTS (
SELECT Project_ID
FROM Feedback F WHERE ID = 268
AND Project_ID IS NOT NULL
AND ';'+ F.Project_ID +';' LIKE '%;'+ CAST(p.Project_ID as varchar) +';%'
)
Você não pode usar o
IN pois está esperando uma lista de valores delimitados por uma vírgula, enquanto você tenta fornecê-lo com um único valor delimitado por um ponto e vírgula. Mesmo que os valores em Project_ID fossem delimitados por uma vírgula, ainda assim não funcionaria. O motivo pelo qual adicionei o
; em cada lado do Project_ID em ambas as tabelas é que desta forma o LIKE operador retornará true para qualquer local, ele encontra o Projects.Project_Id dentro do Feedback.Project_Id . Você deve adicionar o ; para o Projects.Project_Id para evitar o LIKE para retornar true quando você estiver procurando por um número que seja uma correspondência parcial com os números na string delimitada. Considere procurar 12 em uma string contendo 1;112;455 - sem adicionar o delimitador ao valor de pesquisa (12 neste exemplo) o LIKE operador retornaria true .