说我有一个查询,返回以下内容
ID SomeValue 1 a,b,c,d 2 e,f,g
我想返回以下内容:
ID SomeValue 1 a 1 b 1 c 1 d 2 e 2 f 2 g
我已经有一个UDF调用Split,它将接受一个字符串和一个delimter并将其作为带有称为[Value]的单个列的表返回。鉴于此,SQL如何实现这一目标?
另外,您可以像这样使用XML:
DECLARE @yourTable TABLE(ID INT,SomeValue VARCHAR(25)); INSERT INTO @yourTable VALUES (1,'a,b,c,d'), (2,'e,f,g'); WITH CTE AS ( SELECT ID, [xml_val] = CAST('<t>' + REPLACE(SomeValue,',','</t><t>') + '</t>' AS XML) FROM @yourTable ) SELECT ID, [SomeValue] = col.value('.','VARCHAR(100)') FROM CTE CROSS APPLY [xml_val].nodes('/t') CA(col)