WEB开发网
开发学院数据库DB2 用 SQL 查询 DB2 XML 数据 阅读

用 SQL 查询 DB2 XML 数据

 2007-05-20 16:17:17 来源:WEB开发网   
核心提示: 连接 XML 数据和关系数据现在,您可能想知道如何连接 XML 数据和非 XML 数据(例如基于传统 SQL 类型的关系数据),用 SQL 查询 DB2 XML 数据(10),DB2 使您可以仅用一条 SQL/XML 语句来做到这一点,有很多方法可用来制定那样的连接,并且 "cl

连接 XML 数据和关系数据

现在,您可能想知道如何连接 XML 数据和非 XML 数据(例如基于传统 SQL 类型的关系数据)。DB2 使您可以仅用一条 SQL/XML 语句来做到这一点。有很多方法可用来制定那样的连接,这取决于数据库模式和工作负载需求,不过这里我们只谈论一个例子。您也许会感到惊讶,其实您已经知道足够多关于 SQL/XML 的东西,完全可以实现这种连接。

还记得吗,"items" 表中的 XML 列包含一个 "CustomerID" 元素。这可以作为与 "clients" 表中基于整数的列 "id" 的一个连接键。因此,如果要获得一个报告,其中列出对您的一件或多件产品发表了评论的客户的姓名和状态,那么需要将一个表中的 XML 元素值与来自另一个表中的 SQL 整数值相连接。实现这一点的一种方法是使用 XMLExists 函数,如 清单 14 所示:

清单 14. 连接 XML 数据和非 XML 数据select clients.name, clients.status from items, clients
where xmlexists('$c/Comments/Comment[CustomerID=$p]'
passing items.comments as "c", clients.id as "p")

第一行标识出要包括在查询结果集中的 SQL 列以及查询中所引用的源表。第二行包括了连接子句。这里,XMLExists 决定在一个目标源中的 "CustomerID" 值是否等于来自另一个目标源的值。第三行指定这两个源:第一个目标源是 "items" 表中的 XML 列 "comments",第二个目标源是 "clients" 表中的整数列 "id"。因此,如果客户对任何产品发表了评论,并且 "clients" 表中存在关于该客户的信息,那么 XMLExists 表达式将等于 "true",报告中将包括该客户的姓名和状态。

上一页  5 6 7 8 9 10 

Tags:SQL 查询 DB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接