条件逻辑
可以操作几个简单的环节字将条件逻辑联合进 XQuery 中。
假定您要联合每位客户。您最企望经由历程电子邮件与他们获得联合,但假设没有他们的电子邮件地点,那么就向他们家里打德律风。假设也没有家庭德律风号码,就经由历程邮局邮寄一封信。因此,需求盘考 DB2 clients 表,获得一个包罗每个客户的单一电子邮件地点、家庭德律风号码或邮政地点的会商列表。
假设将条件逻辑联合进 XQuery 中,这个使命就很随意完成。获得所需信息的一种步伐如下:
清单 33. 具有分三部分的条件表达式的 XQuery
xquery
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client
return (
if ($y/email) then $y/email[1]
else if ($y/phone/home) then <homePhone>{$y/phone/home/text()}</homePhone>
else $y/Address)
我们来看看这个盘考的第四行到第六行。可以看到,它们是 return
子句的组成部分,因此决意盘考的输入是什么。
第四行搜检文档中能否至多有一个 email 元素;假设有,那么它指定应该前去第一个 email 元素。假设没有 email 元素,那么执行第五行。它指示 DB2 在 phone 元素下寻觅 home 元素。假设文档中包罗家庭德律风号码,那么提取它的文本节点并作为新的 “homePhone” 元素的一部分前去。最后,假设客户的会商文件(XML 文档)中没有电子邮件地点和家庭德律风号码,那么 DB2 前去完好的 Address 元素。由于 clients 表 中的一切记录都包罗邮政地点,所以这个盘考的逻辑确保 DB2 会为每个客户前去一种会商编制。
这个盘考的输入是:
清单 34. 盘考输入
<email>
love2shop@yahoo.com
</email>
<Address>
<street>
1204 Meridian Ave.
</street>
<apt>
4A
</apt>
<city>
San Jose
</city>
<state>
CA
</state>
<zip>
95124
</zip>
</Address>
<homePhone>
4083332222
</homePhone>
<email>
golfer12@yahoo.com
</email>
<email>
beatlesfan36@hotmail.com
</email>
<homePhone>
6503310091
</homePhone>
版权声明: 原创作品,答理转载,转载时请务必以超链接编制标明文章 原始出处 、作者信息和本声明。不然将追究执法责任。