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

现在我们想要把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函数把最前面的逗号去掉 就可以了。

以上。

转载于:https://www.cnblogs.com/blazeZzz/p/7359575.html

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

  1. sqlserver中select造成死锁

    项目上线,准备验收前出现了一个严重的问题:很多select语句作为死锁的牺牲,大部分报表无法打开.这个问题影响范围很大所有的报表都无法访问,而我们的报表是放在电视上面轮播的,电视放在工厂里面,所以出现 ...

  2. R语言dplyr处理dataframe:使用mutate函数生成新的列、recode函数进行数据编码、rename函数重命名字段、arrange排序数据列、select筛选数据、filter过滤数据

    R语言使用dplyr包处理dataframe数据:使用mutate函数生成新的数据列.recode函数进行数据编码.rename函数重命名字段.arrange函数对数据列内容排序.select筛选数据 ...

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

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

  4. sqlserver怎么查看索引_Sql Server之旅——第六站 为什么都说状态少的字段不能建索引...

    我们在学sqlserver的时候,大多教科书和前辈们都说状态少的字段不要建索引,由此带来的开销还不如不建索引,但是这句话有多少人真的知道,或者说有多少人真的对此有比较深刻的理解,而不是听别人道听途说. ...

  5. 处理数字_10_计算某列重复最多的值

    计算某列重复最多的值 需求描述 需求:计算EMP表里SAL字段重复最多的值,以部门编号为20的为例. 解决方法:通过窗口函数或则借助聚合函数来完成. 注: 数据库数据集SQL脚本详见如下链接地址 员工 ...

  6. 处理数字_1_计算某列的最小/大值

    计算某列的最小/大值 需求描述 需求:按照部门编号分组找出EMP表中工资最低/最高值,同时返回出deptno 解决方法:通过聚合函数MIN/MAX结合GROUP BY来完成. 注: 数据库数据集SQL ...

  7. php枚举mysql,小技巧:取得MYSQL中ENUM(枚举)列的全部可能值。-PHP教程,PHP应用...

    取得mysql中enum(枚举)列的全部可能值 这里其实并不需要其它的什么函数来支持,只需要使用mysql提供的一些sql语句就可以了. 这里为了简单起见,以mysql的系统表user为例,取出sel ...

  8. 添加列oracle默认值,Oracle 11g增加列,并带默认值的新特性

    在Oracle 11g以前,如果要在一个大表中增加一列,并设置默认值,那将是一个非常悲剧的事情.有些时候不得不选择在线重定义功能来实现 Oracle 11g增加列,并带默认值的新特性 [日期:2014 ...

  9. 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题...

    今天在处理数据库过程中碰到这样的问题在插入一条数据到表中 系统报这样的错误 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题 表有一列是自增长的 ...

最新文章

  1. [转]笑话: 耐力惊人的三只乌龟
  2. DateTime 的24小时和12小时制
  3. 如何起一个好的学术期刊论文题目?
  4. iOS 地图定位 定位
  5. 亿些模板【数论数学】
  6. 【转】C#中相同不同程序集存在相同的命名空间的时候的冲突解决办法
  7. 深度学习 《LSTM和GRU模型》
  8. 使用Go语言创建WebSocket服务
  9. 一文读懂ClickHouse(概述,安装,数据类型,表引擎,sql语法)
  10. 周爱民:真正的架构师是没有title的(图灵访谈)
  11. 【重识 HTML + CSS】CSS 选择器
  12. 怎么保存php格式,把php代码保存到php文件实现方法
  13. 孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用
  14. tornado之获取参数
  15. android 支付接口
  16. c语言程序最简单例子,简单C语言程序的例子
  17. 【转载】KG-知识图谱初探
  18. vs2015离线安装QT的vsix工具
  19. Deep Multimodal Representation Learning(深度多模态表示学习)
  20. 信阳发现多例蜱虫病病例

热门文章

  1. JS中window.showModalDialog()详解
  2. Java基础知识:Java实现Map集合二级联动4
  3. 如何对数据库中的表以及表中的字段进行重命名
  4. JS,JQuery杂谈
  5. docker 全部杀掉
  6. React-Router 源码分析1
  7. 大数据笔记-0907
  8. 作为一名前端开发工程师,你必须掌握的WEB模板引擎:Handlebars
  9. 代码审计之DocCms漏洞分析
  10. File System Auditor 安装全程截图