• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQLServer XML查询18句话入门教程
    复制代码 代码如下:

    /*01.
    02.sql xml 入门:
    03. --by jinjazz
    04. --http://blog.csdn.net/jinjazz
    05.
    06. 1、xml: 能认识元素、属性和值
    07.
    08. 2、xpath: 寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)
    09.
    10. 语法格式,这些语法可以组合为条件:
    11. "."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,
    12. "name"表示按名字查找,"@name"表示按属性查找
    13.
    14. "集合[条件]" 表示根据条件取集合的子集,条件可以是
    15. 数 值:数字,last(),last()-数字 等
    16. 布尔值:position()数字,@name='条件',name='条件'
    17. 条件是布尔值的时候可以合并计算:and or
    18.
    19. 3、xquery: 基于xpath标的准查询语言,sqlserver xquery包含如下函数
    20. exist(xpath条件):返回布尔值表示节点是否存在
    21. query(xpath条件):返回由符合条件的节点组成的新的xml文档
    22. value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一
    23. nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表
    24.*/

    复制代码 代码如下:

    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>


    --测试语句,如果不理解语法请参考上面的xpath规则和xquery函数说明

    --1、文档
    select @data
    --2、任意级别是否存在price节点
    select @data.exist('//price')
    --3、获取所有book节点
    select @data.query('//book')
    --4、获取所有包含lang属性的节点
    select @data.query('//*[@lang]')
    --5、获取第一个book节点
    select @data.query('//book[1]')
    --6、获取前两个book节点
    select @data.query('//book[position()=2]')
    --7、获取最后一个book节点
    select @data.query('//book[last()]')
    --8、获取price>35的所有book节点
    select @data.query('//book[price>35]')
    --9、获取category="WEB"的所有book节点
    select @data.query('//book[@category="WEB"]')
    --10、获取title的lang="en"的所有book节点
    select @data.query('//book/title[@lang="en"]')
    --11、获取title的lang="en"且 price>35的所有book节点
    select @data.query('//book[./title[@lang="en"] or price>35 ]')
    --12、获取title的lang="en"且 price>35的第一book的(第一个)title
    select @data.query('//book[./title[@lang="en"] and price>35 ]').value('(book/title)[1]','varchar(max)')
    --13、等价于12
    select @data.value('(//book[./title[@lang="en"] and price>35 ]/title)[1]','varchar(max)')
    --14、获取title的lang="en"且 price>35的第一book的(第一个)title的lang属性
    select @data.value('((//book[@category="WEB" and price>35 ]/title)[1]/@lang)[1]','varchar(max)')
    --15、获取第一本书的title
    select Tab.Col.value('(book/title)[1]','varchar(max)') as title
    from @data.nodes('bookstore')as Tab(Col)
    --16、获取每本书的第一个author
    select Tab.Col.value('author[1]','varchar(max)') as title
    from @data.nodes('//book')as Tab(Col)
    --17、获取所有book的所有信息
    select
    T.C.value('title[1]','varchar(max)') as title,
    T.C.value('year[1]','int') as year,
    T.C.value('title[1]','varchar(max)')as title,
    T.C.value('price[1]','float') as price,
    T.C.value('author[1]','varchar(max)') as author1,
    T.C.value('author[2]','varchar(max)') as author2,
    T.C.value('author[3]','varchar(max)') as author3,
    T.C.value('author[4]','varchar(max)') as author4
    from @data.nodes('//book') as T(C)
    --18、获取不是日语(lang!="jp")且价格大于35的书的所有信息
    select
    T.C.value('title[1]','varchar(max)') as title,
    T.C.value('year[1]','int') as year,
    T.C.value('title[1]','varchar(max)')as title,
    T.C.value('price[1]','float') as price,
    T.C.value('author[1]','varchar(max)') as author1,
    T.C.value('author[2]','varchar(max)') as author2,
    T.C.value('author[3]','varchar(max)') as author3,
    T.C.value('author[4]','varchar(max)') as author4
    from @data.nodes('//book[./title[@lang!="jp"] and price>35 ]') as T(C)
    您可能感兴趣的文章:
    • SQLServer XML数据的五种基本操作
    • sqlserver2005 xml字段的读写操作
    • C#怎样才能将XML文件导入SQL Server
    • SQLServer XML查询快速入门(18句话)
    • SqlServer参数化查询之where in和like实现之xml和DataTable传参介绍
    • Sqlserver 2005使用XML一次更新多条记录的方法
    • 在SQL Server中将数据导出为XML和Json的方法
    • SQL Server解析XML数据的方法详解
    上一篇:BCP 大容量数据导入导出工具使用步骤
    下一篇:sqlserver中查找所有包含了某个文本的存储过程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQLServer XML查询18句话入门教程 SQLServer,XML,查询,句话,入门教程,