Questo è un altro esempio dell'importanza di normalizzare i dati.
Mantenere più punti dati in una singola colonna non è quasi mai la progettazione corretta e con quasi mai intendo circa il 99,9999%.
Se non riesci a normalizzare il tuo database, puoi utilizzare una soluzione alternativa come questa:
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) +';%'
)
Non puoi usare il IN operatore poiché si aspetta un elenco di valori delimitato da una virgola, mentre si tenta di fornirgli un unico valore delimitato da un punto e virgola. Anche se i valori in Project_ID fossero delimitati da una virgola, non funzionerebbe comunque.
Il motivo per cui ho aggiunto il ; su ciascun lato del Project_ID in entrambe le tabelle è così che il LIKE l'operatore restituirà true per qualsiasi posizione trova il Projects.Project_Id all'interno del Feedback.Project_Id . Devi aggiungere il ; al Projects.Project_Id per evitare il LIKE per restituire true quando stai cercando un numero che corrisponda parzialmente ai numeri nella stringa delimitata. Considera di cercare 12 in una stringa contenente 1;112;455 - senza aggiungere il delimitatore al valore di ricerca (12 in questo esempio) il LIKE l'operatore restituirà true .