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

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