(4.28)for xml path 在合并拆分上的作用演示
for xml path 用于合并与拆分
1、合并
很多时候需要在SQL Server中创建逗号分隔列表。这可以使用SQL Server的DOR XML PATH功能完成。与select语句一起使用时,FOR XML PATH生成一个xml。其示例如下所示。
|
1
2
3
4
5
6
|
DECLARE @tb TABLE(sno int identity,col1 varchar(10))
INSERT INTO @tb VALUES('a'),('b'),('c'),('d')
SELECT ',' + col1 from @tb
for xml path('')
|
上面的查询创建了一个表变量,并使用FOR XML PATH对其进行简单的选择。我们案例中的分隔符是“,”。上述查询的输出如下所示。

我们得到一个逗号分隔列表,但是我们仍然需要摆脱“a”之前的第一个逗号。这可以使用STUFF功能完成,如下所示。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
DECLARE @tb TABLE(sno int identity,
col1 varchar(10))
INSERT INTO @tb VALUES('a'),('b'),('c'),('d')
SELECT
STUFF(
(SELECT ',' + col1 from @tb
for xml path('')),
1,
1,
''
) AS Comma_separated_list
|
上面的查询删除了烦人的“,”并返回以下结果。

2、拆分
这是将列表转换为表的快速SQL函数。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
-- sql function to convert list to table
CREATE FUNCTION fn_listtotable
(
@list nvarchar(max),
@delimeter nvarchar(100)
)
RETURNS @split TABLE
(
sno int identity,
value varchar(max)
)
BEGIN
Declare @xml XML
select @xml = cast('<A>'+ replace(@list,@delimeter,
'</A><A>')+ '</A>' as xml)
INSERT INTO @split
select t.value('.','varchar') as inVal
from @xml.nodes('/A') as x(t)
RETURN
END
|
上述查询利用SQL Server的Xquery功能来分割分隔值。该功能可以如下所示使用

(4.28)for xml path 在合并拆分上的作用演示的更多相关文章
- sql分组合并字段重复项sql for xml path
-------------------------(情景描述) 在我们处理数据时,可能会碰到这种情景: Id Name 1 a,b 2 ...
- 使用FOR XML PATH实现多行数据合并成一列
有时为避免循环操作数据库.列表展示等一些原因需要将数据及关联数据批量加载进行集中处理,一种解决办法可以使用FOR XML PATH将多行数据合并成一列,达到字段拼接的效果.例如有两个表, 部门表T_D ...
- 使用自连接、for xml path('')和stuff合并显示多行数据到一行中(转)
原文: http://njm.iteye.com/blog/795881 --使用 自连接.for xml path('')和stuff合并显示多行数据到一行中 --注 --1.计算列可以不用包含在聚 ...
- 利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式 比如有一张表tb有两列,其格式和数据为: id value—————1 aa1 bb2 aaa2 b ...
- sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)
SQL 列转行,即多行合并成一条 需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district ...
- 转:利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
http://blog.csdn.net/rav009/article/details/50723307 T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml ...
- sql server 多条数据字段合并及创建临时表 FOR XML PATH
SELECT 字段=(SELECT b.合并字段+',' FROM 表一 AS b WHERE b.相同条件=a.相同条件 FOR XML PATH('')) FROM 表一 AS a DECLARE ...
- sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符
由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] i ...
- SQL 将一列多行数据合并为一行 FOR XML PATH
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法 ...
随机推荐
- css背景色半透明的最佳实践
之前项目中遇到纯色的半透明背景,都是这么干: <style> .box {width:300px;height:300px;position:relative;} .mask {width ...
- centos7 网络配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPR ...
- 近5年常考Java面试题及答案整理(三)
上一篇:近5年常考Java面试题及答案整理(二) 68.Java中如何实现序列化,有什么意义? 答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写 ...
- java.util.HashMap的简单介绍
1. java.util.HashMap的底层实现是数组+链表. 2. 简介put(key, value)方法的执行过程: 1)通过key值,使用散列算法计算出来一个hash值,用来确定该元素需要存储 ...
- android基础---->子线程更新UI
和许多其他的GUI 库一样,Android 的UI 也是线程不安全的.也就是说,如果想要更新应用程序里的UI 元素,则必须在主线程中进行,否则就会出现异常.了解AsyncTask的用法,请参见我的博客 ...
- CVE-2019-8341 Jinja2 RCE漏洞学习
漏洞简述 漏洞简介 Jinja2.10版本,Environment的实例方法from_string,存在RCE,该函数在内部实现逻辑中,存在exec函数去执行了,from_string函数参数中的ji ...
- windows 2008 r2 不能启用网络发现
在win2008 R2里面,不能启用网络发现,查询资料,得知需开启一下三个服务: Function Discovery Resource Publication SSDP Discovery UPnP ...
- kafka在zookeeper上的节点信息和查看方式
kafka在Zookeeper上的节点如下图: 该图片盗自大牛的博客http://blog.csdn.net/lizhitao/article/details/23744675 服务端开启的情况下,进 ...
- Mysql的复杂语句
简单的crud操作很容易,但是对于嵌套的查询语句,多表查询语句,以及条件查询语句,这些都很复杂,需要不断练习. limit a,b: 从a开始,长度为b. SELECT * FROM tb_quali ...
- Redis一次数据丢失
一台Redis服务器,4核,16G内存且没有任何硬件上的问题.持续高压运行了大约3个月,保存了大约14G的数据,设置了比较完备的Save参数.而就是这台主机,在一次重起之后,丢失了大量的数据,14G的 ...