sql 如何将查出来的一列用逗号拼接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 如何将查出来的一列用逗号拼接相关的知识,希望对你有一定的参考价值。

写个存储过程,声明一个结果用的varchar变量,用游标把读出来的字段拼出来,照着下边的改改就行了
create proc [dbo].[teststr]asbegin declare @result VARCHAR(max)--用来处理结果的变量 declare @resultt VARCHAR(10) set @result=''
begin try deallocate tmpc end try begin catch end catch
declare tmpc cursor for select deviceid from t_carinfo Open tmpc --循环并提取记录 Fetch Next From tmpc Into @resultt--取第一条记录存入@resultt中 While ( @@Fetch_Status=0 ) begin set @result=@result+','+@resultt Fetch Next From tmpc into @resultt----下一条 end --关闭游标 Close tmpc --释放游标 Deallocate tmpc print substring(@result,2,len(@result)-1)--这里就是把第一个逗号去掉,取全部的数据end
参考技术A 在处理ResultSet的循环里添加逗号 参考技术B declare
v_sql varchar2(4000);
begin
for i in (select level a from dual connect by level<=4) loop
v_sql := v_sql||'sum(decode('||i.a||','||i.a||',''a'')), ';
end loop;
v_sql:=rtrim(v_sql,', ');
dbms_output.put_line(v_sql);
end;本回答被提问者和网友采纳
参考技术C 什么数据库?

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

  最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实现。

  首先,准备好需要的数据,脚本如下:  

if 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 如何将查出来的一列用逗号拼接的主要内容,如果未能解决你的问题,请参考以下文章

mysql语句 如何将查出来的字符串转化为数字

SQL查询,如何将查询结果的一列拼接接在结尾行上。如

MySQL的sql语句如何将一列数据拼接成一个字符串?

oracle 如何将一个字段里的值拆分为多个值显示出来

如何用sql语句将一列多行数据拼接逗号隔开形成一条记录

如何将SQL查询出来的一列数据赋值,执行存储过程