• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

使用分割功能显示在单独一行

sql 来源:Behnam 3次浏览

考虑我已经创建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 | 
--------- 


===========解决方案如下:

试试这个:

这个工作没有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); 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)