首頁  >  文章  >  資料庫  >  當符合條件涉及一個表中的列包含另一個表中的列的子字串時,如何執行 JOIN 操作?

當符合條件涉及一個表中的列包含另一個表中的列的子字串時,如何執行 JOIN 操作?

Susan Sarandon
Susan Sarandon原創
2024-10-26 18:29:29383瀏覽

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?

在 SQL JOIN 中使用 LIKE

在 SQL 中,執行 JOIN 操作通常需要指定不同表的列之間的匹配條件。其中一個條件涉及將表 A 中的列與表 B 中的列進行匹配,其中 B 列的內容可以在 A 列的內容之前或之後變化。這種情況需要使用 LIKE 運算子。

要實現此目的,您有多種選擇:

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

這裡,INSTR () 傳回第一個的位置A 列的值出現在B 列中。匹配行是位置大於 0 的行。

  1. 直接使用LIKE:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>

此方法將通配符附加到A 列值的兩側,允許在B 列中在其之前或之後添加任何字元。

  1. 將LIKE 與CONCAT 結合使用:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>

與先前的方法類似,此方法使用CONCAT() 函數在A 列值的兩側建構一個帶有通配符的字串。

為了確保不區分大小寫的匹配,它是建議在比較之前將兩列轉換為大寫。這可以透過使用 UPPER() 函數來實現。

請注意,最有效的方法將取決於所涉及的特定資料庫和數據,這是透過檢查 EXPLAIN 計畫輸出來確定的。

以上是當符合條件涉及一個表中的列包含另一個表中的列的子字串時,如何執行 JOIN 操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn