zoukankan      html  css  js  c++  java
  • SQLServer ForXmlPath应用

    SQLServer 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;

        查询结果:

  • 相关阅读:
    Docker最全教程之MySQL容器化 (二十四)
    Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
    Docker最全教程之使用PHP搭建个人博客站点(二十二)
    构建自己的简单微服务架构(开源)
    使用Jmeter进行http接口测试
    Appium 服务关键字
    Appium入门示例(Java)
    Appium for win7 环境搭建
    android adb常用指令
    Android测试环境搭建(win7)
  • 原文地址:https://www.cnblogs.com/weihanli/p/forxmlpathSimpleDemo.html
Copyright © 2011-2022 走看看