Tidak pernah baik menggunakan nilai yang dipisahkan koma untuk disimpan dalam database jika memungkinkan coba buat tabel terpisah untuk menyimpannya karena kemungkinan besar ini adalah 1:n
hubungan.
Jika ini tidak memungkinkan maka ada beberapa cara berikut yang dapat Anda lakukan, Jika jumlah nilai Anda yang akan dicocokkan akan tetap sama, maka Anda mungkin ingin melakukan rangkaian Like
pernyataan bersama dengan OR/AND
tergantung pada kebutuhan Anda.
Mis.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
Namun kueri di atas kemungkinan akan menangkap semua nilai yang berisi 21
jadi meskipun kolom dengan nilai seperti 1210
,210
juga akan dikembalikan. Untuk mengatasinya, Anda dapat melakukan trik berikut yang menghambat kinerja karena menggunakan fungsi di where
klausa dan itu bertentangan dengan pembuatan Seargable
kueri. Tapi ini dia,
--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 + ',%'
Jika jumlah nilai yang akan dicocokkan akan berubah maka Anda mungkin ingin melihat ke Indeks Teks Lengkap
dan Anda harus memikirkan hal yang sama. Dan jika Anda memutuskan untuk menggunakan ini setelah Fulltext Index
Anda dapat melakukan seperti di bawah ini untuk mendapatkan apa yang Anda inginkan,
Mis.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')