SQL Server语句分割某个字段写法
王递杰 2021年6月28日 SQL
原数据:
select * from Stu
现有需求是将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
分割后查询结果:
注意:如果分割符@ch是空格‘ ’,要把语句中的REPLACE(Name, ' ', '')改成Name,不能去空格
相关博客
评论
暂无评论
推荐阅读
随笔分类
Powered by .NET 6.0 陕ICP备2020018176号-4