Non è mai opportuno utilizzare i valori separati da virgola per archiviare nel database se è possibile provare a creare tabelle separate per archiviarli poiché molto probabilmente questo è 1:n
relazione.
Se ciò non è fattibile, ci sono i seguenti modi possibili per farlo, Se il numero di valori da abbinare rimarrà lo stesso, allora potresti voler fare la serie di Like
dichiarazione insieme a OR/AND
a seconda delle tue esigenze.
Es.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
Tuttavia, la query precedente probabilmente catturerà tutti i valori che contengono 21
quindi anche se colonne con valori come 1210
,210
verrà anche restituito. Per ovviare a questo puoi fare il seguente trucco che ostacola le prestazioni poiché utilizza le funzioni in where
clausola e ciò va contro il rendere Seargable
query. Ma ecco qua,
--Declare valueSearch variable first to value to match for you can do this for multiple values using multiple variables.
Declare @valueSearch = '21'
-- Then do the matching in where clause
WHERE
(',' + RTRIM(Media) + ',') LIKE '%,' + @valueSearch + ',%'
Se il numero di valori da abbinare cambierà, potresti voler esaminare Indice FullText
e dovresti pensare allo stesso modo. E se decidi di andare con questo dopo Fulltext Index
puoi fare come di seguito per ottenere ciò che desideri,
Es.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')