用 SQL 查询 DB2 XML 数据
2007-05-20 16:17:17 来源:WEB开发网清单 5. 根据 XML 元素值限制结果select name from clients
where xmlexists('$c/Client/Address[zip="95116"]'
passing clients.contactinfo as "c")
第一行是一个 SQL 子句,指定仅检索 "clients" 表 "name" 列中的信息。WHERE 子句调用 XMLExists 函数,指定一个 XPath 表达式,这个表达式使 DB2 找到 "zip" 元素并检查元素值是否为 95116。"$c/Client/Address" 子句表明 DB2 用于定位 "zip" 元素的 XML 文档层次结构中的路径。通过使用可以从节点 "$c"(稍后将会解释)访问的数据,DB2 将从 "Client" 元素中找到它的子元素 "Address",以便检查邮政编码("zip" 值)。最后一行决定 "$c" 的值:它是 "clients" 表的 "contactinfo" 列。因此,DB2 检查 "contactinfo" 列中的 XML 数据,从根元素 "Client" 深入到 "Address" 子元素再找到 "zip" 子元素,然后判断客户是否居住在目标地区。如果客户住在目标地区,则 XMLExists 函数的返回值为 "true",DB2 将返回与那一行相关的客户的姓名。
在使用 XMLExists 查询谓词时经常会出现一个错误,如 清单 6 所示。
清单 6. 根据 XML 元素值限制结果时采用的不正确语法select name from clients
where xmlexists('$c/Client/Address/zip="95116" '
passing clients.contactinfo as "c")
虽然这个查询也可以成功地执行,但是它不能限制结果,使之仅包含居住在邮政编码为 95116 的地区的客户。(这是由于标准中规定的语义造成的,而且这并不是 DB2 所特有的。)为了限制结果,使之仅包含居住在邮政编码为 95116 的地区的客户,需要使用前面 清单 5 中展示的语法。
- ››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表' (数...
更多精彩
赞助商链接