Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah anda boleh melakukan operasi JOIN di mana keadaan padanan melibatkan lajur daripada satu jadual yang mengandungi subrentetan lajur daripada jadual lain?

Bagaimanakah anda boleh melakukan operasi JOIN di mana keadaan padanan melibatkan lajur daripada satu jadual yang mengandungi subrentetan lajur daripada jadual lain?

Susan Sarandon
Susan Sarandonasal
2024-10-26 18:29:29383semak imbas

How can you perform a JOIN operation where the matching condition involves a column from one table containing a substring of a column from another table?

Menggunakan LIKE dalam SQL JOIN

Dalam SQL, melakukan operasi JOIN selalunya memerlukan penetapan keadaan padanan antara lajur daripada jadual yang berbeza. Satu syarat sedemikian melibatkan pemadanan lajur daripada jadual A dengan lajur daripada jadual B, di mana kandungan lajur B boleh berbeza-beza sebelum atau selepas kandungan lajur A. Senario ini memerlukan penggunaan operator LIKE.

Untuk mencapai ini, anda mempunyai beberapa pilihan:

  1. Menggunakan INSTR:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON INSTR(b.column, a.column) > 0</code>

Di sini, INSTR() mengembalikan kedudukan yang pertama kemunculan nilai lajur A dalam lajur B. Baris yang sepadan ialah baris yang kedudukannya lebih besar daripada 0.

  1. Menggunakan LIKE Secara Terus:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>

Kaedah ini menambahkan kad bebas pada kedua-dua belah nilai lajur A, membenarkan mana-mana aksara mendahului atau mengikutinya dalam lajur B.

  1. Menggunakan LIKE dengan CONCAT:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>

Sama seperti pendekatan sebelumnya, kaedah ini membina rentetan dengan kad bebas pada kedua-dua sisi nilai lajur A menggunakan fungsi CONCAT().

Untuk memastikan padanan tidak sensitif huruf besar-besaran, ia adalah disyorkan untuk menukar kedua-dua lajur kepada huruf besar sebelum membandingkannya. Ini boleh dicapai dengan menggunakan fungsi UPPER().

Perhatikan bahawa kaedah yang paling cekap akan bergantung pada pangkalan data dan data khusus yang terlibat, seperti yang ditentukan dengan memeriksa output rancangan EXPLAIN.

Atas ialah kandungan terperinci Bagaimanakah anda boleh melakukan operasi JOIN di mana keadaan padanan melibatkan lajur daripada satu jadual yang mengandungi subrentetan lajur daripada jadual lain?. 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