首頁 >資料庫 >mysql教程 >如何在 SQL 中拆分定界 VARCHAR 資料列以進行子字串比對?

如何在 SQL 中拆分定界 VARCHAR 資料列以進行子字串比對?

DDD
DDD原創
2024-12-26 08:03:11712瀏覽

How to Split a Delimited VARCHAR Column in SQL for Substring Matching?

如何在SQL 中將分隔的VARCHAR 列拆分為多個值並執行子字串匹配

您的原始查詢過濾“AD_Ref_List”是基於儲存在“xx_insert”表中的分隔值清單的表。但是,Oracle 將逗號分隔的值視為一個字串,從而導致沒有匹配的行。

要解決此問題,請考慮以下方法:

使用字串子字串匹配分隔符號:

將列值和分隔清單都包含在分隔符號中並執行子字串匹配。這可確保在分隔清單中找到精確匹配。

SELECT r.Value
FROM   AD_Ref_List r
       INNER JOIN xx_insert x
       ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' )
WHERE  r.AD_Reference_ID = 1000448
AND    x.xx_insert_id    = 1000283;

使用正規表示式分割分隔清單:

從分隔清單中擷取單一值使用正規表示式和子查詢。然後,在主查詢中執行基於值的匹配。

SELECT Value
FROM   AD_Ref_List
WHERE  AD_Reference_ID = 1000448
AND    value IN (
  SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL )
  FROM   xx_insert
  WHERE  xx_insert_id    = 1000283
  CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' )
);

注意事項:

  1. 選擇最適合您的效能和資料要求的方法.
  2. 確保列值和分隔清單的格式一致分隔符號。
  3. 考慮使用預存程序或函數來封裝分割邏輯,以實現可重複使用性和更易於維護。

以上是如何在 SQL 中拆分定界 VARCHAR 資料列以進行子字串比對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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