Pertama-tama, menggunakan nilai yang dipisahkan koma di bidang bermasalah, dan Anda harus mempertimbangkan untuk menyimpannya di tabel terpisah. Maka Anda bisa mendapatkan rekaman dengan lebih efisien:
select ...
from mainTable t
inner join valueTable v1 on v1.id = t.id and v1.value = 1
inner join valueTable v2 on v2.id = t.id and v2.value = 2
inner join valueTable v3 on v3.id = t.id and v3.value = 3
Jika itu tidak memungkinkan, Anda harus menggunakan cara pencocokan string yang lambat. Untuk mencocokkan nilai dalam string yang dipisahkan koma, Anda dapat menggunakan like
operator:
... where
concat(',', someField, ',') like '%,1,%' and
concat(',', someField, ',') like '%,2,%' and
concat(',', someField, ',') like '%,3,%'
Menempatkan pemisah di kedua sisi nilai yang dicari memastikan bahwa Anda tidak mendapatkan hasil positif palsu. Menambahkan koma sebelum dan sesudah nilai bidang memastikan bahwa Anda dapat menemukan nilai pertama dan terakhir.