SQLServer ForXmlPath简单应用

ForXmlPath简单应用

一:ForXmlPath介绍

forXmlPath    是SQL中的forXml语法的一部分,本文主要讲Path模式

---SQL中FOR XML子句的四种模式用法

1、AUTO模式:返回数据表为起表名的元素,每一列的值返回为属性;

SELECT * FROM tb_test for xml auto

2、RAW模式:返回数据行为元素,每一列的值作为元素的属性;

SELECT * FROM tb_test for xml raw(‘fsf‘)

3、PATH模式:通过简单的XPath语法来允许用户自定义嵌套的XML结构、元素、属性值

SELECT * FROM tb_test for xml path(‘fsf‘)

4、EXPLICIT模式:通过SELECT语法定义输出XML的结构

二:ForXmlPath应用示例

Tab_users:

tab_items:

    1. ForXmlPath

      SELECT * FROM tab_users FOR XML PATH

    2. ForXmlPath(‘Param‘)

      SELECT * FROM tab_users FOR XML PATH(‘User‘)

    3. ForXmlPath + AS

      SELECT userID AS id,LastName AS 姓,FirstName AS 名 FROM dbo.tab_users FOR XML PATH(‘用户‘)

    4. 终极大招

      SELECT userID AS id ,

              LastName AS 姓,

      FirstName AS 名,

              (SELECT CONCAT(itemName,‘,‘) FROM dbo.tab_items WHERE userId =1 FOR XML PATH(‘‘)) AS Items

      FROM dbo.tab_users

      WHERE userID = 1

      由上图查询结果可以看到我们通过 ForXmlPath实现了将tab_items表中userid为1的item,最后多了一个逗号,我们可以将查询结果利用String的Trim(",")扩展方法去掉然后可以根据需要是否需要进行Split拆分,也可以利用数据库中的LEFT()方法截取字符串将最后一个逗号去掉。

    5. 终极大招补充

      SELECT * ,

      LEFT(A.Items, LEN(A.Items) - 1) AS 物品

      FROM ( SELECT userID AS id ,

      LastName AS 姓 ,

      FirstName AS 名 ,

      ( SELECT CONCAT(itemName, ‘,‘)

      FROM dbo.tab_items

      WHERE userId = 1

      FOR

      XML PATH(‘‘)

      ) AS Items

      FROM dbo.tab_users

      WHERE userID = 1

      ) AS A;

      查询结果:

时间: 2024-10-05 05:08:16

SQLServer ForXmlPath简单应用的相关文章

SQLServer 原理简单解析

(1) 客户端sqlserver网络接口通过一种网络协议(可以是共享内存:简单高速,客户端和sql server在同一台计算机默认连接方式:TCP/IP:访问sql server最常用的一种协议,客户端指定ip地址和端口号连接到sql server;命名管道:命名管道和TCP/IP协议在体系结构上是类似的,是为局域网设计的,在广域网中速度会慢一些:VIA:虚拟接口适配器,是一种可以让两个系统进行高性能通信的协议,要求通信两端使用特殊的硬件和专门连接)和服务的的SNI建立了一个连接,然后通过网络协

达梦7的试用 与SQLSERVER的简单技术对比

达梦7的试用 与SQLSERVER的简单技术对比 达梦数据库公司推出了他们的数据库服务管理平台,可以在该平台使用达梦数据库而无须安装达梦7数据库 地址:http://online.dameng.com/ 说实话,第一眼看到还是感到很高大上的,毕竟ORACLE.MYSQL.SQLSERVER都没有推出数据库试用的云平台 其实其他数据库也应该学习一下达梦,做一个平台让大家有机会学习自家的数据库知识,虽然现在这个时代下载安装包比较容易,不过提供一个平台也是有好处的 达梦数据库文档下载:http://f

SQLSERVER最简单的同名数据库恢复过程.

一. 冷备份恢复 1. net stop mssqlserver # 如果是安装的默认数据库实例 关闭 sqlserver的数据库 2. copy sqlserver的数据文件 主要是mdf 数据文件以及ldf 的磁盘文件. 3. 如果数据库采取完整日志模式 日志文件比较多的情况下可以先处理一下日志文件. 1. checkpoint 2. 任务-收缩-日志文件. 修改大小 3. 报表-按照磁盘大小排序-展示所有的表 4. 将不需要的日志表 以及 备份表 truncate 掉 5. 收缩mdf 数

使用Django创建一个后端是SQLSERVER的简单系统(一)Django连接SQLServer数据库

window环境下Django连接SQLSERVER, 1.创建项目: 2.创建application: 3.使用pycharm打开项目,如下图: 4.配置虚拟环境: 安装Django\pyodbc\django-pyodbc-azure,如下图: 5.在配置环境中配置连接字符: 6.在配置环境中安装app,设置templates路径: 7.定义一个类: 8.make migrations: 9.migrate: 10.我们看一下数据库: 11. 表已经建好了,接下来我们写一个管理系统. 原文地

sqlserver常用简单语句

1.增 插入内容 insert into <表名> (列1,列2,列3) values ('值1','值2','值3') 检索出的内容插入到另外一张表 insert into <表名> (列1,列2,列3) select 列1,列2,列3 from <表2>; 2.删 删除表中指定的内容 delete from <表名> where <条件> 3.改 更新表指定内容 update <表名> set 列=值 where <条件&g

解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

原文:解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译) 解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究vardecimals 是怎麽存储在磁盘上的. 作为一般的介绍vardecimals 是怎样的,什么时候应该使用,怎样使用,参考这篇文章 vardecimal 存储格式启用了吗? 首先,我们需要看一下vardecim

解剖SQLSERVER 第十一篇 对SQLSERVER的多个版本进行自动化测试(译)

原文:解剖SQLSERVER 第十一篇 对SQLSERVER的多个版本进行自动化测试(译) 解剖SQLSERVER 第十一篇    对SQLSERVER的多个版本进行自动化测试(译) http://improve.dk/automated-testing-of-orcamdf-against-multiple-sql-server-versions/ 自从我发布了OrcaMDF Studio,我已经意识到SQL2005和SQL2008之间的一些系统表的差异. 这些差异导致OrcaMDF 解析失败

智能将SqlServer的查询语句转换为分页语句

主要用到了jsqlparser,前面有篇博客介绍过: JAVA - Sql解析工具jsqlparser简单使用 为了给Mybatis分页插件增加对sqlserver的支持,专门写了这样一个独立的工具,只依赖jsqlparser. 这个类不仅是为了给分页插件使用的,他还能独立使用,使用它你可以方便的生成一个分页查询. 分页插件地址:Mybatis_PageHelper SqlServer分页转换完整代码:com/github/pagehelper/SqlServer.java 简单讲一下处理的逻辑

Kettle从excel导入数据到sql server

从excel工作表中读取数据逐行执行insert语句插入到sqlserver 为了简单起见只选取了三个个字段作为参数,日期,字符类型的需要加上'' 执行结果如下: