DB2 SQL/XML使用

函数:
  1. XMLPARSE:解析字符或者大对象二进制数据,产生XML
  2. XMLSERIALIZE:将XML值转换为字符或者大对象二进制数据
  3. XMLVALIDATE:根据XML schema校验XML值的有效性
  4. XMLEXISTS:检测XQuery是否返回结果(如由一个或多个项所组成的序列)
  5. XMLQUERY:执行一个XQuery并以一个序列返回结果
  6. XMLTABLE:执行一个XQuery,以关系数据表形式返回结果(如果可能的话)
  7. XMLCAST:XML类型转换

XMLEXISTS:

 

SELECT name FROM clients WHERE xmlexists( '$c/Client/Address[zip="95116"]' passing clients.contact as "c" ) 

 

说明: 

 

在WHERE子句中调用XMLEXISTS函数,参数指定了XML路径表达式,DB2据此导航到XML文档邮编元素并且查找值 95116。 “$c/Client/Address”指定了DB2在XML文档中定位邮编元素的路径。美元符号($)用来指定变量。passing clients.contact as "c"对变量c进行定义。这里,“clients”是表名,“contact”是 XML列的列名。换言之,XML文档传递给了变量c。 DB2检索“contact”列中的XML数据,从根节“client”向下,通过节点“Address”到节点“zip”,经过目标邮编匹配检查判断该客户是否居住在目标地区。

 

在DB2 9.5中进行了简化:

 

SELECT name FROM clients WHERE xmlexists( '$CONTACT/Client/Address[zip="95116"]' ) 

 

XMLQuery:

 

SELECT xmlquery('$c/Client/email' passing contact as "c") FROM clients WHERE status = 'Gold' 

 

使用XQuery FLWOR表达式中的for:

 

SELECT name, xmlquery( ‘for $e in $c/Client/email[1] return $e’ passing contact as “c” ) FROM clients WHERE status = ‘Gold’ 

 

SELECT xmlquery('for $e in $c/Client/email[1]/text() return

{$e}

' passing contact as "c") FROM clients WHERE status = 'Gold' 

 

 

XQuery的FLWOR表达式 FLWOR是几个词首字母的缩写: 

  1. FOR:对序列进行迭代 
  2. LET:绑定变量 
  3. WHERE:定义过滤器 
  4. ORDER:将过滤结果排序
  5. RETURN:返回查询结果 

实例:

 

 

CREATE TABLE dept(deptID CHAR(8),deptdoc XML);  

 

将如下XML文档插入到deptdoc列:

 

John Doe 408 555 1212 344 Peter Pan 408 555 9918 216  

 

然后可以像如下使用FLWOR表达式:

 

xquery for $d in db2-fn:xmlcolumn('dept.deptdoc')/dept let $emp := $d//employee/name where $d/@bldg > 95 order by $d/@bldg return {$d/@bldg, $emp}  

 

结果:

 

John Doe Peter Pan  

 

XMLTABLE:

 

SELECT t.comment#, i.itemname, t.customerID, Message FROM items i, xmltable('$c/Comments/Comment' passing i.comments as "c" columns Comment# integer path 'CommentID', CustomerID integer path 'CustomerID', Message varchar(100) path 'Message') AS t  

 

说明:

第1行指定了包含在结果集中的列。以变量 t作为前缀表明该列的值是XML文档的元素值。 第2行调用 XMLTABLE函数,参数指定了包含目标数据的DB2 XML列,以及目标数据在XML文档中的路径。 第4行至第6行的“columns”语句将XML元素映射到结果集中相应各列。映射还指定了XML元素值将要转换成的数据类型。示例中,所有XML数据都被转换成传统SQL数据类型。

 

XMLELEMENT:

 

这个例子使用XMLELEMENT函数创建一系列XML item元素,每一项都包含ID、brand name

和 stock keeping unit(SKU)三个子元素,它们的值由“items”表相应列获取。基本上,当把关系数据转

化成XML数据时都可以使用XMLELEMENT函数。

df

SELECT xmlelement (name "item", itemname), xmlelement (name "id", id), xmlelement (name "brand", brandname), xmlelement (name "sku", sku) FROM items WHERE srp < 100 

 

结果:

 

4272 Classy 981140 1193 Natural557813  


 

 

 

 

 

你可能感兴趣的:(DB2)