频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

查询包含名称空间的XML数据

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组

  您可能想知道,为什么这个查询中出现了一个 WHERE 子句。严格地说,这不是必需的。因为 PARTNERS 表中的每个 XML 文档都包含一个 <company> 根元素,您只需检索所有公司信息,而不必理会名称空间。然而,如果 PARTNERS.DETAILS 中有一个包含根元素 <firm> 的文档,而在查询中又忽略了上述 WHERE 子句,那么对于那个文档,DB2 返回的是空记录。这是由于 SQL 的语义导致的:没有了 WHERE 子句,SQL 查询就不会在返回的结果集中过滤掉表中的任何行。因此,如果使用 SQL/XML 查询 XML 数据,就必须包括一个 WHERE 子句,并在其中使用 XMLExists() 函数(或其他过滤谓词)来确保结果中不会为表中的每个行都包括一行。

  案例 2:返回选定名称空间中的所有 XML “company” 数据

  常常需要将对 XML 数据的查询限制在特定的名称空间内。本节考虑如何获得与名称空间 urn:xmlns:saracco-sample:company1.0 相关联的所有有关公司的 XML 文档。

  在 DB2 中,必须在查询中声明相关的名称空间。清单 11 为一个 XQuery 表达式声明一个默认的名称空间:

  清单 11. 在 XQuery 中声明默认名称空间xquery declare default element namespace "urn:xmlns:saracco-sample:company1.0";

  这个子句不能独立运行。若独立运行则会产生一个 SQL16002N 错误。名称空间声明之后必须紧随着要发出的 XQuery。这个例子声明一个默认的名称空间,并指示 DB2 检索关于与那个名称空间相关联的所有公司的信息:

  清单 12. 使用默认名称空间的 XQueryxquery declare default element namespace "urn:xmlns:saracco-sample:company1.0";
db2-fn:xmlcolumn('PARTNERS.DETAILS')/company%

更多文章 更多内容请看SQL Server 索引和查询专题XML详解开发应用专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
    收藏此文】【 】【打印】【关闭
    相关图文阅读
    频道图文推荐
    健 康 咨 询
    时 尚 咨 询
    巧巧读书宗旨
    相关专题
    讨论组问题推荐
    站内各频道最新更新文档
    站内最新制作专题
    热门关键字导读
    Photoshop教 程照片处理 照片制作 PS快捷键 抠图
    计 算 机 故 障XP系统修复
    艺 术 与 设 计设计 流媒体 设计欣赏 边框
    计 算 机 安 全ARP
    站内频道文章精选
    巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章