您现在的位置是:首页 > SQL > SQL Server语句分割某个字段写法

SQL Server语句分割某个字段写法

王递杰 2021年6月28日 SQL

原数据:

select * from Stu

微信截图_20210628175949.jpg

现有需求是将Name字段以“;”分隔符分割后来查询

SQL Server语句写法:

declare @ch char(1)=';';
WITH NameCollect
AS 
( 
	SELECT      
	ID,
	SingleName = CAST(LEFT(REPLACE(Name, ' ', ''),CHARINDEX(@ch,REPLACE(Name,' ', '') + @ch)-1) AS NVARCHAR(MAX)) ,
	Split = CAST(STUFF(REPLACE(Name, ' ', '') + @ch,1,CHARINDEX(@ch,REPLACE(Name, ' ','') + @ch), '') AS NVARCHAR(MAX))
	FROM     dbo.Stu
	WHERE    Name IS NOT NULL
UNION ALL
	SELECT       
	ID,
	SingleName = CAST(LEFT(Split,CHARINDEX(@ch, Split) - 1) AS NVARCHAR(MAX)) ,
	Split = CAST(STUFF(Split, 1, CHARINDEX(@ch, Split), '') AS NVARCHAR(MAX))
	FROM     NameCollect
	WHERE    Split > ''
)
SELECT * FROM NameCollect
--select ID,count(1) FROM NameCollect group by ID


分割后查询结果:

微信截图_20210628180343.jpg


注意:如果分割符@ch是空格‘ ’,要把语句中的REPLACE(Name, ' ', '')改成Name,不能去空格

评论

评论插件