• Sql Server XML


    实验数据:

    Create table  xmldata
    (name NVARCHAR(20),
     age int,
     sex NVARCHAR(5)
    )
    
    INSERT INTO  xmldata VALUES (N'张三',12,N'男'),
    (N'李四',12,N'女'),
    (N'王五',12,N'男')
    
    SELECT * FROM xmldata
    

     表数据转换XML

    FOR XML PATH
    --把表数据转换成XML数据
    
    
    --将数据存入属性中
    SELECT name AS '@c1',age AS '@c2',sex AS '@c3'  FROM xmldata FOR XML PATH('XMLRow') , root('XMLData')
    --PATH('XMLRow')定义行标签名称 , root('XMData')定义根标签名称,定义属性名称要加单引号和@

     

     

    --将数据存入节点中
    SELECT name AS c1,age AS c2,sex AS c3 FROM xmldata FOR XML PATH('XMLRow') , ROOT('XMLData')
    --字段别称定义数据节点的名称 

    解析XML数据 

    1、xml:        能认识元素、属性和值
        
    2、xpath:    寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)
                    
                    语法格式,这些语法可以组合为条件:
                    "."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,
                    "name"表示按名字查找,"@name"表示按属性查找
                    
                    "集合[条件]" 表示根据条件取集合的子集,条件可以是
                        数  值:数字,last(),last()-数字 等
                        布尔值:position()<数字,@name='条件',name='条件'
                    条件是布尔值的时候可以合并计算:and or
        
    3、xquery:    基于xpath标的准查询语言,sqlserver xquery包含如下函数
                    exist(xpath条件):返回布尔值表示节点是否存在
                    query(xpath条件):返回由符合条件的节点组成的新的xml文档
                    value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一
                    nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表

    declare @data xml
    set @data='
    <bookstore>
    <book category="COOKING">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
    </book>
    <book category="CHILDREN">
      <title lang="jp">Harry Potter</title>
      <author>J K. Rowling</author>
      <year>2005</year>
      <price>29.99</price>
    </book>
    <book category="WEB">
      <title lang="en">XQuery Kick Start</title>
      <author>James McGovern</author>
      <author>Per Bothner</author>
      <author>Kurt Cagle</author>
      <author>James Linn</author>
      <author>Vaidyanathan Nagarajan</author>
      <year>2003</year>
      <price>49.99</price>
    </book>
    <book category="WEB">
      <title lang="cn">Learning XML</title>
      <author>Erik T. Ray</author>
      <year>2003</year>
      <price>39.95</price>
    </book>
    </bookstore>
    '
    
    
    SELECT T.C.value('@category','varchar(max)') as category,
    T.C.value('title[1]','varchar(max)') as title,
    T.C.value('title[1]/@lang','varchar(max)') as lang,
    T.C.value('author[1]','varchar(max)') as author,
    T.C.value('author[2]','varchar(max)') as author1
    FROM @data.nodes('/bookstore/book') as T(C)

  • 相关阅读:
    PHP生成xml 无法识别或是无法读取或是浏览器不识别等问题
    关于PHP 采集类
    Centos7 下安装Docke
    Git使用之设置SSH Key
    yii2.0中Rbac 怎么添加超加管理员
    Undefined index: HTTP_RAW_POST_DATA的解决办法
    window下phpstudy的nginx配置虚拟主机
    yii2.0中添加二维数组,多条数据。
    预防onion比特币勒索病毒,如何快速关闭135,137,138,139,445端口
    github与git之间怎么建立连接
  • 原文地址:https://www.cnblogs.com/JinweiChang/p/10461785.html
Copyright © 2020-2023  润新知