Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan LIKE Sertai dalam SQL: INSTR, LIKE atau CONCAT?

Bagaimana untuk Melakukan LIKE Sertai dalam SQL: INSTR, LIKE atau CONCAT?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 10:27:01659semak imbas

How to Perform a LIKE Join in SQL: INSTR, LIKE, or CONCAT?

Melakukan LIKE Sertai dalam SQL

Apabila memadankan nilai antara dua jadual menggunakan gabungan, mungkin terdapat kejadian di mana lajur daripada satu jadual perlu memadankan mana-mana bahagian lajur daripada jadual lain. Ini selalunya dicapai menggunakan pengendali LIKE dalam keadaan sertai.

Katakan anda mempunyai dua jadual, Jadual A dan Jadual B, dan anda mahu menyertainya dengan syarat lajurA dalam Jadual A adalah "seperti" lajurB dalam Jadual B. Ini bermakna padanan itu boleh memasukkan nilai penuh dalam lajurB atau aksara sebelum atau selepasnya.

Menggunakan INSTR:

Satu kaedah ialah menggunakan fungsi INSTR() dalam keadaan gabungan:

<code class="sql">SELECT *
FROM TABLE A
JOIN TABLE B ON INSTR(B.columnB, A.columnA) > 0</code>

Menggunakan LIKE:

Pilihan lain ialah menggunakan operator LIKE dengan kad bebas:

<code class="sql">SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE '%'+ A.columnA +'%'</code>

Menggunakan LIKE dengan CONCAT:

Anda juga boleh menggabungkan simbol kad bebas dengan nilai lajur menggunakan fungsi CONCAT():

<code class="sql">SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE CONCAT('%', A.columnA ,'%')</code>

Penukaran Huruf Besar:

Untuk memastikan padanan tidak sensitif huruf besar, disyorkan untuk menukar nilai lajur kepada huruf besar sebelum membandingkannya:

<code class="sql">SELECT *
FROM (SELECT UPPER(A.columnA) 'ua' FROM TABLE A) A
JOIN (SELECT UPPER(B.columnB) 'ub' FROM TABLE B) B ON INSTR(B.ub, A.ua) > 0</code>

Pertimbangan Kecekapan:

Kecekapan kaedah ini mungkin berbeza-beza bergantung pada pangkalan data dan struktur jadual tertentu. Adalah dinasihatkan untuk menyemak output rancangan EXPLAIN untuk menentukan pendekatan yang paling optimum.

ANSI lwn. Non-ANSI JOIN:

ANSI JOIN mengikut sintaks piawai, manakala bukan- ANSI JOIN menggunakan sintaks yang lebih tradisional. Dalam kes ini, klausa JOIN adalah bersamaan dengan klausa WHERE dalam bukan ANSI JOIN:

<code class="sql">SELECT *
FROM TABLE A,
     TABLE B
WHERE INSTR(B.columnB, A.columnA) > 0</code>

Menggunakan ANSI JOINs menawarkan kelebihan untuk memisahkan keadaan cantuman daripada keadaan penapis dalam klausa WHERE.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan LIKE Sertai dalam SQL: INSTR, LIKE atau CONCAT?. 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