关于sql列转字符串

2018-07-12  本文已影响0人  LandString

今儿写sql的时候又碰见列转字符串的问题,遇见了几百次,每次遇见都要百度一下,在这里稍微记一下看能不能加深一下印象。

需求:将sql查询出来的某一列以固定的分隔方式组成一个字符串

例:

image

比如有这样一张表

现在需要查询出来的结果为 name:"张三,李四,王五"

sql server:


select stuff((
select';'+name 

from Student for xml path('')),1,1,'') as name

解:在这里需要两个方法的使用,一种是sql server中 “for xml path”

在SQL SERVER中我们有很多方法读取XML字段中的片段,反过来SQL SERVER也允许我们将表数据以XML方式显示,for xml path便是以xml显示的一种方式。

select ','+name

from Student for xml path('')

这段代码就是告诉数据库服务器要将生成的XML中name值以“,”方式进行拼接。

更多可参考:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

这段代码拼接出来的结果字符串前面会多出一个没必要的分号,这个时候我们就要用到

STUFF(string,insert position,delete count,string inserted) 这个函数了。

第一个参数string,指的就是你要操作的内容,可以是一个固定字符串,也可以指定为某列;

第二个参数insert position,指插入开始位置,SQLSERVER中默认是从1开始,而非从0开始;

第三个参数delete count,指的是要删除的字符个数,从position删除指定的个数,如果count为0表示不删除;

第四个参数string inserted,表示要插入的字符串;

eg:select stuff('abcdefg',3,2,'123')

结果:ab123efg

上一篇下一篇

猜你喜欢

热点阅读