首頁 >資料庫 >mysql教程 >如何使用 SQL Server 將逗號分隔的儲存格值轉換為單獨的行?

如何使用 SQL Server 將逗號分隔的儲存格值轉換為單獨的行?

Linda Hamilton
Linda Hamilton原創
2025-01-03 12:46:44782瀏覽

How to Convert Comma-Separated Cell Values into Individual Rows Using SQL Server?

使用SQL Server 將逗號分隔的單元格值轉換為單獨的行

在處理表中的資料時,有時可能會遇到儲存的值作為單一儲存格內以逗號分隔的字串。為了便於分析或進一步處理,可能需要將這些值拆分為單獨的行。本文探討如何使用 SQL Server SELECT 查詢來實現此目標。

問題:

考慮一個名為「Sample」的表,其中有一個名為「String」的列,包含逗號分隔值。您需要將資料轉換為每個值佔據自己一行的格式:

原始表:

Id String
1 abc,def,ghi
2 jkl,mno,pqr

所需輸出:

Id processedrows
1 abc
1 def
1 ghi
2 jkl
2 mno
2 pqr

解決方案:

要獲得所需的輸出,您可以使用以下SELECT查詢:

SELECT A.[id],
     Split.a.value('.', 'VARCHAR(100)') AS String
FROM  (SELECT [id],
         CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String
     FROM  TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a);

解釋:

  1. 括號內的內部查詢透過包裝每個值,從「String」欄位建構一個XML 字串帶有XML 標籤()。此步驟是啟用後續分割操作所必需的。
  2. CROSS APPLY 運算子將String.nodes() 函數套用至內部查詢中的每一行,從而有效地將「String」欄位拆分為XML 中的各個節點
  3. 最後, SELECT 語句會擷取「id」欄位以及每個分割節點的值,該值會自動轉換為VARCHAR數據

參考:

有關此技術和替代解決方案的更多信息,請參閱以下資源:

http:/ / /www.sqljason.com/2010/05/converting-single-comma-separated-row.html

以上是如何使用 SQL Server 將逗號分隔的儲存格值轉換為單獨的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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