Per SQL-Server, ci sono due approcci comuni per questo. La terza opzione da evitare è passare un varchar
e concatenarlo in un'istruzione SQL dinamica con IN
- questa è una superficie di attacco ad iniezione trasparente.
Opzioni ragionevoli:
-
inserisci un
varchar
e utilizzare un UDF per dividere i dati su un delimitatore (come in questa domanda ), forse virgola, pipe, tab, ecc. Unisciti al risultato:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- utilizzare un parametro con valori di tabella (SQL2008) e unisciti direttamente (evita l'UDF)