Este es otro ejemplo más de la importancia de normalizar sus datos.
Mantener múltiples puntos de datos en una sola columna casi nunca es el diseño correcto, y casi nunca me refiero a alrededor del 99,9999%.
Si no puede normalizar su base de datos, puede usar una solución 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) +';%'
)
No puedes usar el IN operador ya que está esperando una lista de valores delimitados por una coma, mientras intenta proporcionarle un único valor delimitado por un punto y coma. Incluso si los valores en Project_ID estuvieran delimitados por una coma, no funcionaría.
La razón por la que agregué ; a cada lado del Project_ID en ambas tablas es que así el LIKE el operador devolverá true para cualquier ubicación, encuentra el Projects.Project_Id dentro del Feedback.Project_Id . Debes agregar el ; al Projects.Project_Id para evitar el LIKE para devolver true cuando busca un número que coincida parcialmente con los números de la cadena delimitada. Considere buscar 12 en una cadena que contenga 1;112;455, sin agregar el delimitador al valor de búsqueda (12 en este ejemplo), el LIKE el operador devolvería true .