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
.