Berbilang Nilai dalam MySQL LIKE Query
Dalam pangkalan data, pengendali LIKE biasanya digunakan untuk memadankan corak dalam rentetan. Walau bagaimanapun, ia boleh menjadi rumit apabila anda perlu mencari padanan untuk berbilang nilai dalam satu medan. Artikel ini meneroka isu menanyakan berbilang nilai menggunakan operator LIKE dalam MySQL.
Mengapa Pertanyaan LIKE Tidak Berfungsi
Mengikut pertanyaan yang anda berikan:
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Pertanyaan ini bertujuan untuk mendapatkan semula baris yang medan 'minat' mengandungi sama ada 'sukan' atau 'pub' atau kedua-duanya. Walau bagaimanapun, ia mungkin tidak menghasilkan hasil yang diingini kerana LIKE menyemak kehadiran corak yang ditentukan secara berurutan. Dalam kes ini, ia mencari '%sports%' dahulu, yang wujud dalam semua baris, dan kemudian '%pub%', yang hanya wujud dalam satu baris. Jadi, anda hanya akan mendapat baris yang mengandungi kedua-dua 'sukan' dan 'pub.'
Penyelesaian Lebih Pantas dan Lebih Cekap
Daripada menggunakan LIKE dengan berbilang corak, pertimbangkan alternatif berikut:
ATAU Logik Operator:
WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Pertanyaan ini menggunakan operator logik ATAU untuk menggabungkan dua pernyataan SUKA. Ia akan mengembalikan mana-mana baris yang sepadan dengan mana-mana corak. Kaedah ini biasanya lebih pantas daripada LIKE dengan berbilang corak.
Ungkapan Biasa REGEXP:
WHERE interests REGEXP 'sports|pub'
Pengendali REGEXP membenarkan anda mencari ungkapan biasa. Dalam kes ini, ungkapan 'sukan|pub' bermaksud ia akan mencari padanan sama ada untuk 'sukan' atau 'pub.' REGEXP boleh menjadi alat yang berkuasa untuk padanan corak yang lebih kompleks.
Pautan Rujukan:
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Berbilang Nilai dengan Cekap dengan Pengendali LIKE MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!