sql按逗号拆分记录,支持不同的分隔符。

2016年10月19日

sql按逗号拆分记录,支持不同的分隔符。

 

IF OBJECT_ID(‘[tb]’) IS NOT NULL DROP TABLE [tb]
GO
CREATE TABLE [tb]([ID] INT,[CODE1] VARCHAR(2),[CODE2] VARCHAR(8))
INSERT [tb]
SELECT 1,’AA’,’AA,BB,CC’
————–开始查询————————–
SELECT a.[ID], a.[CODE1], b.[CODE2]
FROM (
SELECT id, [CODE1], [CODE2]= CAST( ‘<x>’+ REPLACE ([CODE2], ‘,’, ‘</x><x>’)+ ‘</x>’ AS XML) FROM [tb]
) a
OUTER APPLY (
SELECT [CODE2]= N.v.value (‘.’, ‘varchar(10)’) FROM a.[CODE2].nodes (‘/x’) N( v)
) b
/*
ID CODE1 CODE2
———– —– ———-
1 AA AA
1 AA BB
1 AA CC

(3 行受影响)
*/

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: sql按逗号拆分记录,支持不同的分隔符。
本文的评论功能被关闭了.