您的位置:首页 > 健康 > 美食 > SQL Server中的FOR XML PATH以及Split

SQL Server中的FOR XML PATH以及Split

2025/3/18 15:36:29 来源:https://blog.csdn.net/qq_45696061/article/details/139647016  浏览:    关键词:SQL Server中的FOR XML PATH以及Split

请添加图片描述

前提

数据库是在2016年以下的版本,以上的版本,现在有最新的函数可以支持者两个了

Split

在c#中Split可以将以指定字符分割的字符串转换为字符串数组,这里主要是用于,主表存储了多个从表的id,存储的时候用的字符串,从而为’1,2,3’,在不借助后端的情况下,sql讲该字符串转换为可识别的id
创建方法

create function split(@string varchar(255),--待分割字符串@separator varchar(255)--分割符
)returns @array table(item varchar(255))
as
begindeclare @begin int,@end int,@item varchar(255)set @begin = 1set @end=charindex(@separator,@string,@begin)while(@end<>0)beginset @item = substring(@string,@begin,@end-@begin)insert into @array(item) values(@item)set @begin = @end+1set @end=charindex(@separator,@string,@begin)endset @item = substring(@string,@begin,len(@string)+1-@begin)if (len(@item)>0)insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))return
END

原代码地址
使用方法

SELECT * FROM dbo.WechatUser WHERE ID IN (SELECT * FROM dbo.split('1,3,17',','))

在这里插入图片描述

FOR XML PATH(‘’)

它可以将列的输出转为行输出,非常有意思,本次是和上面那个方法连用

SELECT  CAST(Name AS varchar) +',' FROM WechatUser WHERE id IN (1,3,17) FOR XML PATH('')

原来查询的结果
在这里插入图片描述
用了FOR XML PATH的查询结果
在这里插入图片描述
这个方法原来是用来转xml的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com