当前位置:Gxlcms > 数据库问题 > Sql Server将一列字段拼接成字符串方法

Sql Server将一列字段拼接成字符串方法

时间:2021-07-01 10:21:17 帮助过:3人阅读

exists (select * from sysObjects where id=object_id(Student)) drop table Student go create table Student ( Id int, Name varchar(20) ) go insert into Student values(1,张三); insert into Student values(2,李四); insert into Student values(3,王五);

 当前表中数据如下:

  技术分享

 

 需要将Name以“张三;李四;王五”格式显示。

 具体通过实现如下:  

select stuff((
select ;+name
from Student for xml path(‘‘)),1,1,‘‘) as name

 乍一看,是不是有点迷糊,不急,下面我们一一道来。

 上面语句我们分为两部分来看,首先要明白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函数的用法,通过上述代码拼接生成的内容为“;张三;李四;王五”,显然最前的“;”是多余的,所以我们通过stuff来去除。

 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 Server将一列字段拼接成字符串方法

标签:blank   targe   ble   images   格式   value   arch   string   tar   

人气教程排行