Sql Server STUFF与FOR XML PATH

要求按type分组查询后,把相同type的,name列值合并,达到如下效果:

解析如下:

一、FOR xml path

     FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数或存储过程来完成的工作。那么以一个实例为主.

假设有张查询表如下

sql 一:

select type,name from tb_account
where name like '%测试入职%'
FOR xml path
查询结果
<row>
  <type>0</type>
  <name>测试入职登录</name>
</row>
<row>
  <type>1</type>
  <name>测试入职6</name>
</row>
<row>
  <type>0</type>
  <name>测试入职</name>
</row>

sql 二:

select type,name from tb_account
where name like '%测试入职%'
FOR xml path('')


查询结果:

<type>0</type>
<name>测试入职登录</name>
<type>1</type>
<name>测试入职6</name>
<type>0</type>
<name>测试入职</name>


sql 三:

select type,name from tb_account
where name like '%测试入职%'
FOR xml path('root')

查询结果 :

<root>
  <type>0</type>
  <name>测试入职登录</name>
</root>
<root>
  <type>1</type>
  <name>测试入职6</name>
</root>
<root>
  <type>0</type>
  <name>测试入职</name>
</root>

sql 四:

select 10+type,','+name+',' from tb_account
where name like '%测试入职%'
FOR xml path('')

查询结果

10,测试入职登录,11,测试入职6,10,测试入职,


 二、stuff函数

 stuff(param1, startIndex, length, param2)
说明:将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符

备注 
如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。 

示例 
以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。

SELECT STUFF('abcdef', 2, 3, 'ijklmn'); 
GO

下面是结果集: 
--------- 
aijklmnef




 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值