美文网首页
关于sql列转字符串

关于sql列转字符串

作者: LandString | 来源:发表于2018-07-12 16:26 被阅读0次

    今儿写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

    相关文章

      网友评论

          本文标题:关于sql列转字符串

          本文链接:https://www.haomeiwen.com/subject/qbyxsftx.html