假设我有一个包含CSV值的列:a,b,c,d
我有一个表函数dbo.Split(@Data varchar,@Delimeter varchar)
,它在行中返回它们,但不确定它在这里是如何应用的。
所以我想说我正在尝试将所有不同的值从一列收集到多行。
如果我做Distinct
,我将最终得到:
Column
-------------------------------------
b
a,b,c
c,d
d
我想回来的是:
Column
-------------------------------------
a
b
c
d
我该怎么做?
答案 0 :(得分:2)
CREATE TABLE #temp
(
name VARCHAR(10)
)
INSERT INTO #temp
VALUES ('b'),
('a,b,c'),
('c,d'),
('d')
SELECT DISTINCT Split.a.value('.', 'VARCHAR(100)') data
FROM (SELECT Cast ('<M>' + Replace(name, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM #temp) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)