Mencari dalam Medan Dipisahkan Koma dalam MySQL
Dalam MySQL, senario tertentu mungkin timbul apabila data disimpan dalam format dipisahkan koma , walaupun amalan yang disyorkan menasihati menentangnya. Ini menimbulkan cabaran apabila cuba melakukan carian tepat dalam medan tersebut. Pertimbangkan contoh berikut:
Jadual mengandungi medan dengan nilai daripada jadual lain yang disimpan sebagai senarai dipisahkan koma:
12,13,14,16
Tugas di tangan ialah mencari nilai khusus dalam ini medan menggunakan pertanyaan seperti:
SELECT ... WHERE field LIKE '%1%'
Walau bagaimanapun, disebabkan sifat data, pertanyaan sedemikian akan sepadan dengan hampir semua entri, kerana kebanyakan ID biasa berada dalam julat yang sempit.
Untuk menangani isu ini, carian yang lebih khusus diperlukan. Daripada menggunakan %1%, pertimbangkan untuk menggunakan %,1,% dalam keadaan SUKA. Ini akan memadankan nilai yang mengandungi 1 didahului dan diikuti dengan koma.
Malangnya, pendekatan ini mempunyai pengehadan untuk nilai pertama dan terakhir dalam senarai yang dipisahkan koma, kerana ia tidak akan dipadankan dengan corak.
Oleh itu, pendekatan berbeza adalah perlu. MySQL menyediakan fungsi berkuasa yang dipanggil FIND_IN_SET, yang membolehkan seseorang mencari dalam senarai yang dipisahkan koma:
SELECT ... WHERE FIND_IN_SET('1', field)
Menggunakan FIND_IN_SET akan mengembalikan kedudukan nilai yang ditentukan dalam senarai yang dipisahkan koma, atau 0 jika nilai tidak ada. Ini membolehkan carian yang tepat dan cekap walaupun dalam struktur data yang tidak ideal.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Nilai Khusus dalam Medan Dipisahkan Koma dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!