Solusi 1:
Seperti yang dikomentari @Jens, ini adalah desain DB yang buruk untuk menyimpan nilai sebagai CSV. Jadi solusi pertama adalah mengubah desain DB Anda karena saya tidak begitu tahu apa yang Anda simpan dan apa tujuan dari DB/kode Anda. tidak dapat menulis skema atau memberikan saran yang berarti.
Solusi 2:
Gunakan find_in_set
fungsi.
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Solusi 3:
Anda dapat menggunakan LIKE
operator. (Beberapa anggota mungkin akan membunuh saya karena menyarankannya, tetapi jika Anda tidak ingin mengubah desain DB Anda - ini adalah opsi kreatif).
Mari kita periksa kode berikut:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Masalahnya adalah ia akan mengembalikan id bidang dengan 22,
di kolom filter_data. Oleh karena itu, Anda harus mengubah data di bawah kolom itu jadi ,
akan muncul juga sebagai karakter pertama dan terakhir. Misalnya:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
Dan sekarang Anda dapat melakukan hal berikut:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Jika Anda memiliki beberapa "filter pencarian", Anda dapat menggabungkan LIKE
s dengan ATAU
operator.