Menggunakan MySQL Like Operator untuk Pelbagai Nilai
Isu:
Pertanyaan MySQL yang cuba gunakan operator LIKE untuk nilai padanan yang mengandungi sama ada "sukan" atau "pub" tidak menghasilkan yang diingini hasil.
Pertanyaan:
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Gelagat Yang Dijangka:
Pertanyaan harus mengembalikan baris yang mengandungi "minat" medan mengandungi sama ada "sukan" atau "pub" atau kedua-duanya.
Penjelasan:
Isu timbul kerana pengendali LIKE dengan berbilang corak memerlukan syarat ATAU. Pertanyaan yang diberikan cuba menggunakan dua operator LIKE berturut-turut tanpa logik ATAU yang betul, yang membawa kepada pemadanan yang salah.
Penyelesaian 1: ATAU Syarat
Penyelesaian yang lebih mudah ialah menggunakan operator ATAU untuk menentukan padanan berbilang kriteria:
SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Penyelesaian 2: Operator REGEXP
Pendekatan alternatif ialah menggunakan operator REGEXP (ungkapan biasa), yang menyokong padanan corak menggunakan satu ungkapan :
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
Ungkapan ini menggunakan | aksara (paip) untuk menentukan ATAU logik antara dua kata kunci, menghasilkan satu corak yang sepadan sama ada "sukan" atau "pub" atau kedua-duanya.
Perhatikan bahawa pengendali REGEXP adalah lebih cekap untuk memadankan berbilang corak berbanding menggunakan LIKE dengan syarat ATAU.
Atas ialah kandungan terperinci Bagaimana Menggunakan Operator MySQL LIKE untuk Pelbagai Nilai dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!