用SQL查询DB2 XML数据
2008-05-15 14:58:11 来源:WEB开发网将关系数据发布为 XML
到到目前为止,我们一直都在着重讨论查询、提取或转换存储在 DB2 XML 列中的数据的方法。而且您已经看到,这些功能都可以通过 SQL/XML 提供。
SQL/XML 还提供了其他非常方便的特性。其中一个特性是将关系数据转换或发布为 XML。本文只讨论这方面的三个 SQL/XML 函数:XMLElement、XMLAgg 和 XMLForest。
通过 XMLElement 可以将存储在传统的 SQL 列中的数据转换成 XML 片段。也就是说,可以基于基本的 SQL 数据构造 XML 元素(带 XML 属性或者不带 XML 属性)。下面的例子嵌入了 XMLElement 函数来创建一系列的 item 元素,每个 item 元素包含一些子元素,分别存放从 "items" 表获得的 ID、品牌和库存单位("sku")值:
清单 18. 使用 XMLElement 将关系数据发布为 XML
select xmlelement (name "item",
xmlelement (name "id", id),
xmlelement (name "brand", brandname),
xmlelement (name "sku", sku) ) from items
where srp < 100
运行该查询将产生类似以下的结果:
清单 19. 上述查询的示例输出
<item>
<id>4272</id>
<brand>Classy</brand>
<sku>981140</sku>
</item>
. . .
<item>
<id>1193</id>
<brand>Natural</brand>
<sku>557813</sku>
</item>
可以将 XMLElement 与其他 SQL/XML 发布函数结合使用来构造 XML 值以及将这些值分组,使它们嵌套成一定的层次结构。清单 20 中的例子使用 XMLElement 创建 customerList 元素,该元素的内容按照 "status" 列中的值分组。对于每个 "customerList" 记录,XMLAgg 函数返回一系列的 customer 元素,每个 customer 元素包含基于 "name" 和 "status" 列的子元素。而且可以看到,customer 元素的值是按照客户姓名排序的。
清单 20. 聚集数据和对数据分组
select xmlelement(name "customerList",
xmlagg (xmlelement (name "customer",
xmlforest (name as "fullName", status as "status") )
order by name ) )
from clients
group by status
假设 "clients" 表包含三个不同的 "status" 值:"Gold"、"Silver" 和 "Standard"。运行上述查询将导致 DB2 返回三个 customerList 元素,每个 customerList 元素可能包含多个 customer 子元素,每个 customer 子元素又进一步包含姓名和状态信息。因此,输出将类似于以下内容:
清单 21. 上述查询的输出
<customerList>
<customer>
<fullName>Chris Bontempo</fullname>
<status>Gold</status>
</customer>
<customer>
<fullName>Ella Kimpton</fullName>
<status>Gold</status>
</customer>
. . .
</customerList>
<customerList>
<customer>
<fullName>Lisa Hansen</fullName>
<status>Silver</status>
</customer>
. . .
</customerList>
<customerList>
<customer>
<fullName>Rita Gomez</fullName>
<status>Standard</status>
</customer>
. . .
</customerList>
- ››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表' (数...
更多精彩
赞助商链接