如何在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, '[^,]+' ) );
注意事項:
以上是如何在 SQL 中拆分定界 VARCHAR 資料列以進行子字串比對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!