用 SQL 查询 DB2 XML 数据
2007-05-20 16:17:17 来源:WEB开发网请务必注意,XQuery(和 XPath)表达式是大小写敏感的。例如,引用 XML 元素 "zip" 的 XQuery 并不适用于名为 "ZIP" 或 "Zip" 的 XML 元素。SQL 程序员有时候很难记住大小写敏感这一点,因为 SQL 查询语法允许使用 "zip"、"ZIP" 和 "Zip" 来引用同一个列名。
DB2 Viper 提供了超过 15 个 SQL/XML 函数,通过这些函数可以搜索 XML 文档中的特定数据,将传统数据转换成 XML,将 XML 数据转换成关系数据,以及执行其他有用的任务。本文不讨论 SQL/XML 的所有方面,而只是谈到几种常见的查询挑战,以及一些关键的 SQL/XML 函数如何解决这些挑战。
根据 XML 元素值 “限制” 结果
SQL 程序员常常编写根据某种条件限制从 DBMS 返回的行的查询。例如,清单 3 中的 SQL 查询限制从 "clients" 表中检索的行,使之只包括那些具有 "Gold" 状态的客户。在这个例子中,客户的状态可在 SQL VARCHAR 列中捕捉。但是,如果您想根据某种应用于 XML 列中数据的条件对搜索进行限制,那么应该怎么做呢?SQL/XML 的 XMLExists 函数为完成该任务提供了一种手段。
通过 XMLExists 可以在 XML 文档中找到一个元素,并测试它是否满足某个特定的条件。如果用在 WHERE 子句中,则 XMLExists 可以限制返回的结果,使之只包括那些包含具有特定 XML 元素值的 XML 文档的行(换句话说,指定的值等于 "true")。
让我们看看早先遇到的一个查询问题。假如您想找到居住在具有特定邮政编码的地区的所有客户的姓名。您也许还记得,"clients" 表的一个 XML 列中存储了客户的地址(包括邮政编码)。(见 图 2。)通过使用 XMLExists,可以从 XML 列中搜索目标邮政编码,并相应地限制返回的结果集。下面的 SQL/XML 查询返回居住在邮政编码为 95116 的地区的客户的姓名:
- ››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表' (数...
更多精彩
赞助商链接