Rumah >pangkalan data >tutorial mysql >Bolehkah anda menggabungkan pengendali LIKE dan IN SQL untuk padanan corak yang cekap?
Menggabungkan Klausa SQL LIKE dan IN untuk Pemadanan Corak Dipertingkat
Dalam SQL, pengendali LIKE biasanya digunakan untuk pemadanan corak, membolehkan anda untuk cari baris yang separa sepadan dengan corak yang ditentukan. Sebaliknya, operator IN membenarkan anda menyemak sama ada nilai lajur sepadan dengan mana-mana elemen dalam set yang telah ditetapkan. Walau bagaimanapun, apabila menggabungkan kedua-dua operator ini, anda mungkin menghadapi had tertentu.
Pertimbangkan senario berikut:
Soalan: Adakah mungkin untuk menggabungkan LIKE dan Klausa IN untuk memadankan lajur dengan cekap terhadap satu siri rentetan berbeza dalam satu pertanyaan? Contohnya:
SELECT * FROM tablename WHERE column IN ('M510%', 'M615%', 'M515%', 'M612%');Matlamat: Mencapai padanan corak menggunakan berbilang ungkapan SUKA tanpa perlu menggelung pada tatasusunan rentetan.
Penyelesaian :
Walaupun konstruk LIKE IN tidak disokong secara eksplisit, terdapat pendekatan alternatif untuk mencapai hasil yang diinginkan:
1. Menggunakan Subrentetan dan IN:
Anda boleh menggunakan fungsi subrentetan() untuk mengekstrak bilangan aksara tertentu dari permulaan lajur, dan kemudian menggunakan operator IN untuk menyemak sama ada subrentetan yang diekstrak sepadan dengan mana-mana daripada rentetan yang disediakan:
SELECT * FROM tablename WHERE substring(column,1,4) IN ('M510','M615','M515','M612')
Dalam contoh ini, fungsi subrentetan() mengekstrak empat aksara pertama lajur dan klausa IN menyemak sama ada subrentetan yang diekstrak sepadan dengan mana-mana empat rentetan yang ditentukan.
2. Menggunakan CASE dan WHEN:
Pendekatan lain melibatkan penggunaan pernyataan CASE dan WHEN untuk menilai berbilang keadaan:
SELECT * FROM tablename WHERE CASE WHEN column LIKE 'M510%' THEN TRUE WHEN column LIKE 'M615%' THEN TRUE WHEN column LIKE 'M515%' THEN TRUE WHEN column LIKE 'M612%' THEN TRUE ELSE FALSE END;
Pernyataan CASE ini menilai setiap keadaan secara berurutan. Jika mana-mana syarat dipenuhi, pertanyaan mengembalikan baris yang sepadan.
Pendekatan alternatif ini membolehkan anda menggabungkan padanan corak dengan kemudahan klausa IN, memudahkan pertanyaan SQL yang lebih cekap dan ringkas.
Atas ialah kandungan terperinci Bolehkah anda menggabungkan pengendali LIKE dan IN SQL untuk padanan corak yang cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!