首頁 > 資料庫 > mysql教程 > 如何在 SQL 中拆分逗號分隔的 VARCHAR 欄位值?

如何在 SQL 中拆分逗號分隔的 VARCHAR 欄位值?

DDD
發布: 2024-12-16 14:37:17
原創
235 人瀏覽過

How to Split Comma-Separated VARCHAR Column Values in SQL?

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板