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

现在我们想要把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. php之opcodes

    opcode是一种php脚本编译之后的语言. 例如: <?php echo "Hello World"; $a = 1 + 1; echo $a; ?> php执行这段 ...

  2. 一种 jquery 检索方案

    整理自:http://www.cnblogs.com/linjiqin/archive/2011/03/18/1988464.html <!DOCTYPE HTML PUBLIC "- ...

  3. 使用阿里云Code进行版本控制并配置IDEA

    1.    申请阿里code的账号,网址如下https://code.aliyun.com, 2.    申请完成之后,将账号信息发给项目负责人,由负责人加入项目中 3.    下载git,下载地址为 ...

  4. hexo配置主题发表文章

    将本地hexo博客部署到github上了,如果想换我们自己喜欢的主题(默认为landscape),同时也要发表发表文章呢,下面给介绍下: 1,进入hexo官网,预览自己想要的主题,https://gi ...

  5. C# 报警 控制蜂鸣器发声

    在C#中可以通过以下四种方式来实现蜂鸣或者报警,播放声音之类的功能.XP下对蜂鸣有用,win7下请接上扬声器. 1). Beep的报警实现 [c-sharp] view plaincopy     / ...

  6. 转载FPGA学习之内嵌乘法器调用

    补充一点,除法的时候如果直接a/b那么就会调用lpm模块,不管输入是否是常数,乘法的时候输入都是reg型变量会调用硬件乘法器,有一个是常数就会调用lpm模块. 上课的时候一直听老师说真正实践的时候你别 ...

  7. 洛谷 P1561 [USACO12JAN]爬山Mountain Climbing

    传送门 题目大意: n头牛,上山时间为u(i),下山为d(i). 要求每一时刻最多只有一头牛上山,一头牛下山. 问每头牛都上下山后花费最少时间. 题解:贪心 推了推样例,发现上山时间一定,那找个下山最 ...

  8. openfaas cli 安装

     1. 安装脚本 curl -sL https://cli.get-faas.com/ | sudo sh   备注安装完成之后如果没有 faas-cli 可以下载脚本,手工执行   2. 使用二进制 ...

  9. centos 7 bbr 安装

    1. 准备 升级内核需要4.9 以及以上   2.  yum  内核升级       a. 添加 ELRepo 源 GPG key rpm --import https://www.elrepo.or ...

  10. ArcGIS_Server的安装

    1.双击ArcGIS_for_Server_Windows_103_142101.exe 2.下一步 3.关闭 4.Win10系统弹出询问框是否更改程序,点击“”是“” 5.开始安装程序,点击next ...