您现在的位置: 爱51代码网 >> 范文 >> 文章正文
SQL 查询多条XML数据里面的某个节点的值

SQL 查询多条XML数据里面的某个节点的值

现在表里面有个字段专门存放xml格式的数据

现在我想把符合条件的数据查找出来  假如xml里面有个A元素值为2

我想问应该怎么操作呢就是把包含xml里某个节点的值符合条件的数据显示出来

select * from tb
where xmltype.exist('xquery')=1

select * from tb
where xmltype.exist('xquery')=1

--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、等价于10  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 ) 

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    undefined reference timer_crea
    linux文件/usr/lib破坏了,还原后
    linux上运行system函数时,print
    Failed to open eth0
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    局域网内个别机器连不上SQL 
    Microsoft Corporation  Ent
    access解决条码扫描数据避免
    access怎样知道报表是否被完
    Access数据库中查询SELECT T
    access每格1秒刷新文本框数据
    C++产生CRC 对照码源代码
    我们的系统检测到您的计算机
    win7旗舰版,以前可以用U盘安
    SQL SERVER 安装出现 “性能
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |