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!