sql将列以,分割;将表数据转化为xml或json格式

这里先了解for xml pathfor json path这两个语法:

for xml path与for json path

通俗一点的讲,将数据转化为XML格式与JSON格式;可能你不理解,咱就上图。

我先创建了临时表 #table

select * into #table
from (

      select 1 as autoID, '32167542' as id, '张三' as name, '唱' as hobby
      union
      select 4 as autoID, '48978925' as id, '李四' as name, '跳' as hobby
      union
      select 7 as autoID, '32167542' as id, '张三' as name, 'rap' as hobby
      union
      select 11 as autoID, '48978925' as id, '李四' as name, '篮球' as hobby
	  union
      select 13 as autoID, '48978925' as id, '李四' as name, '时长两年半' as hobby
)x

select * from #table for xml path

 

我们看到,转换成xml格式后,头标签为row,我们更改头标签的话就for xml path('标签名称'),不要头标签就for xml path(''),下面是结果

转json就用for json path,执行效果。

很强大有木有?有的扣1,没有的扣眼珠子。 

好了,那要怎么才能把列数据用,分割呢?下面为大家实现。

select id,name,(select ','+hobby from #table for xml path('')) as hobby from #table

下面图片可以看到,hobby列已经用,分割好了

 但是,张三和李四的爱好重复在一起了。哎,不是所有人都喜欢,唱,跳,rap,打篮球啊,所以,我们要让张三李四找到自己的爱好。就要进行下面操作。

select id,name,stuff((select ','+hobby from #table as a where a.id=b.id for xml path('')),1,1,'') as hobby 
from #table as b
group by id,name

 分好了,到此结束。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值