使用 XQuery 查询 DB2 XML 数据
2009-11-11 00:00:00 来源:WEB开发网清单 3 中显示的查询也可以用一种更简单的三步路径表达式来表达,如 清单 5 所示:
清单 5. 检索客户传真数据的路径表达式xquery
db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/fax
路径表达式的第一步调用 db2-fn:xmlcolumn 函数从 CLIENTS 表的 CONTACTINFO 列获得一个 XML 文档的列表。第二步返回这些文档中的所有 Client 元素,第三步则返回嵌入在这些 Client 元素中的 fax 元素。
如果您无兴趣通过查询获得 XML 片段,而只想要符合条件的 XML 元素值的文本表示,那么可以在 return 子句中调用 text() 函数,如 清单 6 所示:
清单 6. 两个用于检索客户传真数据的文本表示的查询xquery
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/fax
return $y/text()
(or)
xquery
db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/fax/text()
上述查询的输出如 清单 7 所示:
清单 7. 上述查询的示例输出4081112222
5559998888
这些示例查询的结果都相当简单,因为 fax 元素是基于基本数据类型的。当然,元素也可能基于复杂的数据类型 —— 即包含子元素(或嵌套层次结构)。例如客户联系方式信息中的 Address 元素就是这样。根据 “DB2 Viper 快速入门”(developerWorks,2006 年 4 月)中定义的模式,该元素包含街道地址、门牌号、所在城市、州、国家以及邮政编码。考虑 清单 8 中的 XQuery 将返回什么结果:
清单 8. 检索复杂 XML 类型的 FLWOR 表达式xquery
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/Address
return $y
更多精彩
赞助商链接