Rumah > Artikel > pangkalan data > Bagaimana untuk Menyertai Jadual dengan Syarat LIKE untuk Padanan Separa?
Apabila menanyakan data daripada berbilang jadual, selalunya perlu untuk menyertainya berdasarkan kriteria tertentu. Satu keperluan biasa ialah untuk mendapatkan semula baris yang sepadan dengan lajur daripada satu jadual mengandungi nilai yang betul-betul atau sebahagiannya sepadan dengan lajur daripada jadual lain. Senario ini ditangani dengan menggunakan operator LIKE bersama-sama dengan pernyataan JOIN.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON INSTR(b.column, a.column) > 0;</code>
Fungsi INSTR menyemak sama ada nilai dalam b.column mengandungi nilai dalam a. lajur, tanpa mengira mana-mana aksara yang mendahului atau mengikutinya.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.column LIKE '%'+ a.column +'%'</code>
Pengendali LIKE melakukan padanan corak, membenarkan kad bebas (*) mewakili sebarang bilangan aksara sebelumnya atau berikut . Dalam kes ini, coraknya ialah %a.column%, memastikan padanan jika b.column mengandungi a.column di mana-mana dalam nilainya.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Serupa dengan contoh sebelumnya, teknik ini menggunakan fungsi CONCAT untuk membina corak secara dinamik. Ia mencapai hasil yang sama seperti pertanyaan LIKE sebelumnya.
Untuk memastikan perbandingan tidak sensitif huruf besar-besaran, adalah dinasihatkan untuk menukar nilai lajur kepada huruf besar sebelum melakukan gabungan.
<code class="sql">SELECT * FROM (SELECT UPPER(a.column) AS upper_a FROM TABLE_A) a JOIN (SELECT UPPER(b.column) AS upper_b FROM TABLE_B) b ON INSTR(upper_b, upper_a) > 0;</code>
Kaedah yang paling berkesan untuk MENYERTAI jadual dengan keadaan LIKE bergantung pada pangkalan data khusus dan gelagat pengoptimum pertanyaan. Anda disyorkan untuk menggunakan ciri EXPLAIN PLAN untuk menentukan laluan pelaksanaan yang paling optimum.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual dengan Syarat LIKE untuk Padanan Separa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!