Ada beberapa cara untuk melakukannya:
-
SQL Dinamis, seperti yang ditunjukkan dalam artikel ini:http://asheej.blogspot.com/2012/04/how-to-use-ms-sql-in-clause-with.html
-
Tentukan setiap item dalam variabel (ini bisa menjadi sangat buruk jika Anda memiliki banyak):
@var1 varchar(20),@var2 varchar(20),@var3 varchar(20)
-
Tulis fungsi split untuk mengubah string menjadi variabel tabel, ada banyak di luar sana. Yang ini adalah favorit pribadi saya:http://dataeducation.com/faster -more-scalable-sqlclr-string-splitting/
-
Gunakan Parameter Nilai Tabel (2008):http://www.techrepublic.com/blog/datacenter/passing-table-valued-parameters-in-sql-server-2008/168
-
Berikut sedikit trik menggunakan CHARINDEX (perhatikan bahwa pendekatan ini Non-Sargable):
String Anda seperti ini:'abc,def'
Menggunakan CHARINDEX
, Anda memasukkan string pencarian dan nilai yang ingin Anda temukan dalam string pencarian dengan pembatas Anda. Jadi menggunakan contoh kecil saya, string akan menjadi ',abc,def,' Perhatikan koma tambahan di awal dan akhir. Kemudian lakukan hal yang sama pada data lapangan. Jika Anda memiliki koma di data Anda, Anda harus menukar delimeter dengan yang lain, seperti char(2), atau titik koma, atau apa pun.
Kemudian untuk melakukan pencarian:
WHERE CHARINDEX ( ',' + expressionToFind + ',' , ',' + expressionToSearch ',') > 0
Padding pembatas membuat pencarian tidak menemukan "abcabc" tetapi akan menemukan "abc", sama persis.
Jika Anda menggunakan 2005, saya akan mengambil fungsi split yang sangat cepat sehingga Anda dapat menghindari penggunaan SQL dinamis.