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
begin
    declare @begin int,@end int,@item varchar(255)
    set @begin = 1
    set @end=charindex(@separator,@string,@begin)
    while(@end<>0)
    begin
        set @item = substring(@string,@begin,@end-@begin)
        insert into @array(item) values(@item)
        set @begin = @end+1
        set @end=charindex(@separator,@string,@begin)
    end
    set @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的

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值