首先我们有一个表 查询结果如下:

现在我们想要把USER_NAME这一列的内容 放到一个字段里面去:

一行sql语句解决问题:

SELECT  STUFF(( SELECT  ',' +convert(VARCHAR, USER_NAME) FROM TE_USER FOR XML PATH('')), 1, 1, '') AS UserName

解释一下上面这条语句:

1,首先STUFF函数在上面的语句里的作用是去除拼接的字符串最前面的逗号

STUFF函数的用法大概是STUFF(param1, startIndex, length, param2)  意思是将param1中自startIndex(SQL中都是从1开始  而非0)起 删除length个字符  然后用param2替换删掉的字符  具体用法请自行百度

2,重点说一下 FOR XML PATH:

执行SELECT * FROM TE_USER FOR XML PATH语句得到的结果:

<row>
<USER_ID>1</USER_ID>
<USER_NAME>张三</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
</row>
<row>
<USER_ID>2</USER_ID>
<USER_NAME>李四</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
</row>
<row>
<USER_ID>3</USER_ID>
<USER_NAME>王五</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
</row>

看得出来 是把sql执行的结果转换成xml格式了

我们再来执行一下下面这条sql    SELECT * FROM TE_USER FOR XML PATH('ABC')

<ABC>
<USER_ID>1</USER_ID>
<USER_NAME>张三</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
</ABC>
<ABC>
<USER_ID>2</USER_ID>
<USER_NAME>李四</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
</ABC>
<ABC>
<USER_ID>3</USER_ID>
<USER_NAME>王五</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
</ABC>

发现xml的row节点变成我们自定义的ABC了  那么我们如果用 FOR XML PATH('') 就代表把节点变为空了:

<USER_ID>1</USER_ID>
<USER_NAME>张三</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
<USER_ID>2</USER_ID>
<USER_NAME>李四</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>
<USER_ID>3</USER_ID>
<USER_NAME>王五</USER_NAME>
<USER_PASSWORD>c4ca4238a0b923820dcc509a6f75849b</USER_PASSWORD>

把节点变空了以后 我们执行SELECT  ',' +convert(VARCHAR, USER_NAME) FROM  TE_USER FOR XML PATH('') 语句  结果:

,张三,李四,王五

这就实现了USER_NAME这一列的值取出来拼接到一起了  再用我们上面说的STUFF函数把最前面的逗号去掉 就可以了。

以上。

sqlserver 把SELECT结果集中一列的所有的值 用逗号隔开放进一个字段内的更多相关文章

  1. linux下处理excel里copy的某列的字符串,去除行末空格并添加特殊字段

    背景:从excel里copy出一列数据到txt,然后放到linux下处理,发现每一行末尾都是固定个数的空格,我想要在每行字符串末尾加固定字段并逗号隔开输出, 1.将特定字段取出,去掉每行末尾的不定个数 ...

  2. SQLSERVER 里SELECT COUNT(1) 和SELECT COUNT(*)哪个性能好?

    SQLSERVER 里SELECT COUNT(1) 和SELECT COUNT(*)哪个性能好? 今天遇到某人在我以前写的一篇文章里问到 如果统计信息没来得及更新的话,那岂不是统计出来的数据时错误的 ...

  3. SqlServer创建数据表描述及列描述信息

    SqlServer创建数据表描述及列描述信息 Intro Q: 为什么要创建描述信息? A: 鼠标悬停在对应表和列上时,会出现描述信息,可以提高工作的效率,借助工具我们根据数据表可以生成Model,可 ...

  4. SQLSERVER中分割字符串成多列

    今天修改到之前的大佬的代码,居然把多个Id存在一个列里面,还是用的逗号分割...特么查询的时候怎么办??? 网上搜索了半天,终于找到了SqlServer里面有一个PARSENAME函数,可以按.(点) ...

  5. Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全

    MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noau ...

  6. sqlserver 插入数据时异常,仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXXXX.dbo.XXXXXXXXX'中的标识列指定显式值。

    INSERT INTO XXXXXXXXX.dbo.XXXXXXXXX select * from XXXXXXXXX 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'X ...

  7. sqlserver中select造成死锁

    死锁过程: select语句使用非聚族索引查询产量信息,会对非聚族索引添加共享锁,由于非聚族索引上没有select的全部数据列,(所以会有书签查找出现,)需要查询产量表.查询产量表时,需要对产量表数据 ...

  8. SqlServer中的自增的ID的最后的值:

    SqlServer中的自增的ID的最后的值: SELECT SCOPE_IDENTITY() --返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值.SELECT @@I ...

  9. SqlServer 禁止架构更改的复制中手动修复使发布和订阅中分别增加的字段同步

    原文:SqlServer 禁止架构更改的复制中手动修复使发布和订阅中分别增加的字段同步 由于之前的需要,禁止了复制架构更改,以至在发布中添加一个字段,并不会同步到订阅中,而现在又在订阅中添加了一个同名 ...

随机推荐

  1. Python爬虫--抓取糗事百科段子

    今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...

  2. WindowManager实现悬浮可拖动效果

    现在360手机卫士有个流量统计的效果,开启流量统计后,在桌面上会出现一个显示流量的窗体,在任何界面都可以自由拖动. 模仿这个功能,做了一个统计手机信号强度的Demo, 界面效果如下: 从上面的截图可以 ...

  3. [置顶] 【机器学习PAI实践六】金融贷款发放预测

    一.背景 很多农民因为缺乏资金,在每年耕种前会向相关机构申请贷款来购买种地需要的物资,等丰收之后偿还.农业贷款发放问题是一个典型的数据挖掘问题.贷款发放人通过往年的数据,包括贷款人的年收入.种植的作物 ...

  4. cursor光标类型

    今天早上在网上看到一篇关于光标类型的总结代码,很好,特定拿来: 最终结果: 代码: <!DOCTYPE html> <html lang="zh-cn"> ...

  5. python学习之控制语句

    #if statement number=int(input("please input a number")); if number<10 : print("is ...

  6. Java中数据库连接池原理机制的详细讲解(转)

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池 (Resource Pool).该模 ...

  7. C++11新特性之字节对齐、多参数模版、placement new

    1. 内存对齐 #pragma pack(push, 1) struct A { char a; int b; double c; ]; }; #pragma pack(pop) #pragma pa ...

  8. W3Schools SQL Quiz

    W3Schools SQL Quiz SQL QUIZ Points: 25 out of 25 1. What does SQL stand for? You answered: Structure ...

  9. Mapreduce shuffle和排序

    Mapreduce为了确保每个reducer的输入都按键排序.系统执行排序的过程-----将map的输出作为输入传给reducer 称为shuffle.学习shuffle是如何工作的有助于我们理解ma ...

  10. HttpModule和HttpHandler -- 系列文章

    ASP.NET 生命周期 在ASP.Net2.0中使用UrlRewritingNet实现链接重写 IHttpModule实现URL重写 使用IHttpHandler防盗链 HttpModule,Htt ...