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
Lepaskan: 2024-10-31 10:27:01
asal
751 orang telah melayarinya

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

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

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

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

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

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