將逗號分隔值轉換為行結構資料
在SQL Server 中,當資料以逗號分隔格式儲存在列中時,提取和操縱個人價值觀可能具有挑戰性。本文示範如何使用選擇查詢將此類資料轉換為行結構格式。
考慮一個名為 Sample 的表,其中包含一個名為 String的列,其中包含逗號-分隔值,例如:
Id | String |
---|---|
1 | abc,def,ghi |
2 | jkl,mno,pqr |
要提取各個值並將其呈現為行,我們可以使用以下方法步驟:
將String 列包裹在XML 標籤內:
CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML)
這將會建立一個XML 片段,其中每個值都封裝在< 中;M>
使用CROSS APPLY 運算子執行分層查詢:
CROSS APPLY String.nodes ('/M') AS Split(a)
這會在XML片段上交叉應用節點方法,從而產生一個新的每個
將Id 列與Split(a).value('text()') 表達式:
SELECT A.[id], Split.a.value('.','VARCHAR(100)') AS String FROM (SELECT [id], CAST('...AS XML) AS String FROM Sample) AS A這會將Id 與提取的值相匹配,並將它們作為單獨的值返回行。
Id | ProcessedRows |
---|---|
1 | abc |
1 | def |
1 | ghi |
2 | jkl |
2 | mno |
2 | pqr |
以上是如何將逗號分隔值轉換為 SQL Server 中的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!