sql 逗号分隔转换成多行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 逗号分隔转换成多行相关的知识,希望对你有一定的参考价值。

	TRUNCATE TABLE LocationWithSourceId
	
	;WITH roy AS 
	(
	    SELECT LocationID,
	           SourceLocationID     = CAST(
	               LEFT(
	                   SourceLocationID,
	                   CHARINDEX(',', SourceLocationID + ',') -1
	               ) AS 
	               NVARCHAR(100)
	           ),
	           SPLIT                = CAST(
	               STUFF(
	                   SourceLocationID + ',',
	                   1,
	                   CHARINDEX(',', SourceLocationID + ','),
	                   ''
	               ) 
	               AS NVARCHAR(100)
	           )
	    FROM   (
	               SELECT LocationID,
	                      SourceLocationID
	               FROM   sf_Locations
	               WHERE  SourceLocationID LIKE '%,%'
	           ) k 
	    UNION ALL 
	    SELECT LocationID,
	           SourceLocationID     = CAST(LEFT(SPLIT, CHARINDEX(',', SPLIT) -1) AS NVARCHAR(100)),
	           SPLIT                = CAST(
	               STUFF(SPLIT, 1, CHARINDEX(',', SPLIT), '') AS NVARCHAR(100)
	           )
	    FROM   Roy
	    WHERE  SPLIT > ''
	)
	
	--SELECT * FROM roy
	
	INSERT LocationWithSourceId
	SELECT x.LocationID,
	       x.SourceLocationID
	FROM   roy x
	
	UNION ALL
	SELECT LocationID,
	       SourceLocationID
	FROM   sf_Locations
	WHERE  SourceLocationID NOT LIKE '%,%' AND SourceLocationID <> ''

以上是关于sql 逗号分隔转换成多行的主要内容,如果未能解决你的问题,请参考以下文章