Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyertai Jadual dengan Syarat LIKE untuk Padanan Separa?

Bagaimana untuk Menyertai Jadual dengan Syarat LIKE untuk Padanan Separa?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 17:59:001035semak imbas

How to Join Tables with a LIKE Condition for Partial Matches?

Menyertai Jadual dengan Keadaan SUKA

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.

Menggunakan INSTR

<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.

Menggunakan LIKE

<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.

Menggunakan LIKE dengan CONCAT

<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.

Sensitiviti Huruf

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>

Pertimbangan Kecekapan

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!

Kenyataan:
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