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;

        查询结果:

  • 相关阅读:
    闭包
    iframe
    函数声明和函数表达式
    简单的事件委托
    onhashchange
    WebP探索
    Chrome
    适合自己学习的一些网站
    模拟jQuery的一些功能
    __autoload()方法
  • 原文地址:https://www.cnblogs.com/weihanli/p/forxmlpathSimpleDemo.html
Copyright © 2011-2022 走看看