在 SQL 中分割 VARCHAR 資料列值
在 SQL 中,VARCHAR 資料型別儲存可變長度字串。處理 VARCHAR 資料列時,可能需要將資料列值拆分為多個單獨的值。
假設您有一個如下所示的 SQL SELECT 語句:
SELECT AD_Ref_List.Value FROM AD_Ref_List WHERE AD_Ref_List.AD_Reference_ID= 1000448
此語句傳回所有AD_Ref_List 表中 Value 欄位的值,其中 AD_Reference_ID 欄位等於 1000448。結果可能如下所示this:
Value |
---|
CO,VO |
在此結果中,值列包含以逗號分隔的值清單。要進一步過濾結果,您可能需要將值拆分為單獨的行,例如:
Value |
---|
CO |
VO |
實現此目的的一種方法是使用IN 運算符,如下所示:
SELECT AD_Ref_List.Value FROM AD_Ref_List WHERE AD_Ref_List.AD_Reference_ID= 1000448 AND AD_Ref_List.Value IN (SELECT xx_insert.XX_DocAction_Next FROM xx_insert WHERE xx_insert_id = 1000283 ) ;
但是,此查詢可能不會傳回任何行,因為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;
此查詢使用 LIKE 運算子來檢查 AD_Ref_List 表中的值是否為 xx_insert 表中的值列表的子字串。這將傳回所需的結果,並且「值」列中的每個值都顯示為單獨的行。
以上是如何在 SQL 中拆分逗號分隔的 VARCHAR 欄位值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!