Rumah > pangkalan data > tutorial mysql > Bolehkah anda menggabungkan pengendali LIKE dan IN SQL untuk padanan corak yang cekap?

Bolehkah anda menggabungkan pengendali LIKE dan IN SQL untuk padanan corak yang cekap?

Linda Hamilton
Lepaskan: 2024-11-14 21:53:02
asal
495 orang telah melayarinya

Can you combine SQL's LIKE and IN operators for efficient pattern matching?

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%');
Salin selepas log masuk

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')
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan