这篇博客宗旨在于处理如何使用sql把带逗号的数据转换为表中的行以及将表中的行拼接成用逗号组成的数据。
具体代码如下功能写在注释里
- --将有逗号的数据转换为一个表存储id加数据
- GO
- DECLARE @Text VARCHAR(200)
- SET @Text = 'test1,test2'
- DECLARE @xml XML
- SET @xml = CONVERT(XML,'<a>'+ REPLACE(@Text,',','</a><a>')+'</a>')
- CREATE TABLE #TMP1
- (
- iID VARCHAR(50),
- sText VARCHAR(200)
- )
- INSERT INTO #TMP1
- SELECT NEWID(),b.value
- FROM (SELECT @xml AS 'XML') a
- CROSS APPLY (SELECT Tb.a.value('.','VARCHAR(200)') as value FROM a.xml.nodes('/a') AS Tb(a)) b
- SELECT * FROM #TMP1
- GO
- --将一个Table中某一列的数据拼成逗号分隔的形式
- GO
- CREATE TABLE #TMP2
- (
- iID INT,
- sText VARCHAR(200)
- )
- INSERT INTO #TMP2( iID, sText )
- VALUES ( 1, 'test1');
- INSERT INTO #TMP2( iID, sText )
- VALUES ( 1, 'test2');
- DECLARE @TMP2RES VARCHAR(200)
- SET @TMP2RES = (SELECT sText+',' FROM #TMP2 FOR XML PATH(''))
- SET @TMP2RES = SUBSTRING(@TMP2RES,0,LEN(@TMP2RES)-1)
- SELECT @TMP2RES
- GO
运行结果如图