2017-12-18 232 views
0

考慮我已經創建dbo.split功能,這樣操作的每個值:使用分割功能顯示在單獨一行

查詢:

select substr from dbo.split(',' , 'A,B,C') 

結果:

|Substr| 
-------- 
|A  | 
-------- 
|B  | 
-------- 
|C  | 
-------- 

現在我想使用此功能轉換此表格:

|ID|Char| 
--------- 
|1 |A,B | 
--------- 
|2 |A | 
--------- 
|3 |B,C | 
--------- 

這個結果:

|ID|Char| 
--------- 
|1 |A | 
--------- 
|1 |B | 
--------- 
|2 |A | 
--------- 
|3 |B | 
--------- 
|3 |C | 
--------- 
+0

我在想你需要遍歷表中的所有記錄,並在每一行上使用你的拆分函數,並將拆分結果插入到另一個表中,這將以你想要的形式。 –

+0

你需要添加一些你已經寫好的代碼 – Sunil

回答

1

試試這個:

這個工作沒有Split功能。

DECLARE @Table TABLE(ID INT, [Char] VARCHAR(20)) 
INSERT INTO @Table VALUES(1,'A,B') 
INSERT INTO @Table VALUES(2,'A') 
INSERT INTO @Table VALUES(3,'B,C') 

SELECT A.ID, 
    Split.a.value('.', 'VARCHAR(100)') AS [Char] 
FROM 
(
    SELECT ID, 
     CAST ('<M>' + REPLACE([Char], ',', '</M><M>') + '</M>' AS XML) AS Data 
    FROM @Table 
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a);