用 SQL 查询 DB2 XML 数据
2007-05-20 16:17:17 来源:WEB开发网连接 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",报告中将包括该客户的姓名和状态。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接