【T-SQL系列】FOR XML PATH 语句的应用

原文:【T-SQL系列】FOR XML PATH 语句的应用

DECLARE @TempTable TABLE
    (
      UserID INT ,
      UserName NVARCHAR(50)
    );
INSERT  INTO @TempTable
        ( UserID, UserName )
VALUES  ( 1, 'a' )
INSERT  INTO @TempTable
        ( UserID, UserName )
VALUES  ( 2, 'b' )

SELECT  UserID ,
        UserName
FROM    @TempTable
FOR     XML PATH

--其实PATH() 括号内的参数是控制节点名称的
SELECT  UserID ,
        UserName
FROM    @TempTable
FOR     XML PATH('lzy')

--这样就不显示上级节点了
SELECT  UserID ,
        UserName
FROM    @TempTable
FOR     XML PATH('')

--大家可以根据自己需要的格式进行组合
SELECT  CAST(UserID AS VARCHAR) + '' ,
        UserName + ''
FROM    @TempTable
FOR     XML PATH('')

SELECT  CAST(UserID AS VARCHAR) + ',' ,
        UserName + '' ,
        ';'
FROM    @TempTable
FOR     XML PATH('')

SELECT  '{' + CAST(UserID AS VARCHAR) + ',' ,
        '"' + UserName + '"' ,
        '}'
FROM    @TempTable
FOR     XML PATH('')

对应结果集:

下面是一个数据统计的应用,希望大家可以通过下面的实例想到更多的应用

DECLARE @T1 TABLE
    (
      UserID INT ,
      UserName NVARCHAR(50) ,
      CityName NVARCHAR(50)
    );
INSERT  INTO @T1
        ( UserID, UserName, CityName )
VALUES  ( 1, 'a', '上海' )
INSERT  INTO @T1
        ( UserID, UserName, CityName )
VALUES  ( 2, 'b', '北京' )
INSERT  INTO @T1
        ( UserID, UserName, CityName )
VALUES  ( 3, 'c', '上海' )
INSERT  INTO @T1
        ( UserID, UserName, CityName )
VALUES  ( 4, 'd', '北京' )
INSERT  INTO @T1
        ( UserID, UserName, CityName )
VALUES  ( 5, 'e', '上海' )

SELECT  *
FROM    @T1

SELECT  CityName ,
        ( SELECT    UserName + ','
          FROM      @T1
          WHERE     CityName = A.CityName
        FOR
          XML PATH('')
        ) AS UserList
FROM    @T1 A
GROUP BY CityName

--生成结果(每个城市的用户名)

SELECT  B.CityName ,
        LEFT(UserList, LEN(UserList) - 1)
FROM    ( SELECT    CityName ,
                    ( SELECT    UserName + ','
                      FROM      @T1
                      WHERE     CityName = A.CityName
                    FOR
                      XML PATH('')
                    ) AS UserList
          FROM      @T1 A
          GROUP BY  CityName
        ) B

对应结果集:

时间: 2024-09-14 12:27:39

【T-SQL系列】FOR XML PATH 语句的应用的相关文章

SQL中FOR XML PATH 语句[可用于分组统计]

FOR XML PATH 语句 :(应该在sql2005及以上版本才能用) declare @t table(id int,name varchar) insert into @t(id,name) values(1,'a') insert into @t(id,name) values(2,'b') select id,name from @t for xml path 运行结果如下: <row> <id>1</id> <name>a</name&g

灵活运用 SQL SERVER FOR XML PATH

原文:灵活运用 SQL SERVER FOR XML PATH         FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主.         一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:        

SQL SERVER FOR XML PATH 行转列实例详解

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主. 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:        接下来我们来看应用FOR XML PATH的查询结果语句如下:  代码如下 复制代码 SELECT * FROM @hob

sqlserver FOR XML PATH 语句的应用_mssql2005

复制代码 代码如下: DECLARE @TempTable table(UserID int , UserName nvarchar(50)); insert into @TempTable (UserID,UserName) values (1,'a') insert into @TempTable (UserID,UserName) values (2,'b') select UserID,UserName from @TempTable FOR XML PATH 运行这段脚本,将生成如下结

浅析sql server对xml简单操作教程

SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中. 随着SQL Server 对XML字段的支持,相应的,T-SQL语句

SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF

原文:SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF 本来用 Writer 写一篇关于一列多行合并的博客来的,结果快写完了时候,在一个插入代码时候,崩了,重新打开,居然连草稿都没有--哎,我也是无语了-- 于是没有心情再写,直接发一下代码,再顺便留几个其他博文的链接 1.FOR XML PATH http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html 2.STUFF http://www

SQL SERVER 原来还可以这样玩 FOR XML PATH

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主.         一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:        接下来我们来看应用FOR XML PATH的查询结果语句如下: SELECT *

SQL Server 中 ROR XML PATH 用法

 FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主.     一.FOR XML PATH 简单介绍     那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下:     接下来我们来看应用FOR XML PATH的查询结果语句如下:     SELECT * FROM @hobb

SQL Server中XML与JSON应用比较

title: SQLServer · 特性分析 · SQL Server中XML与JSON应用比较 author: 石沫 背景 SQL Server是一种强大的数据库引擎,不仅性能卓越,稳定,功能还很强大,SQL Server 2016中已经支持JSON.这让我想到以前工作中经常使用的SQL XML,也对比一下他们几个关键领域的应用方法.这两种SQL特性,在实际的工作中也是常用的功能,特别是JSON在最近发展非常火爆,SQL Server也不落后,很快就在SQL Server2016支持. 广义