• DB2 9 根蒂根基(730 考试)认证指南,第 7 部分: XQuery 简介(7)


    developerWorks








    条件逻辑

    可以操作几个简单的环节字将条件逻辑联合进 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>
    






    版权声明: 原创作品,答理转载,转载时请务必以超链接编制标明文章 原始出处 、作者信息和本声明。不然将追究执法责任。

  • 相关阅读:
    函数式宏定义与普通函数
    linux之sort用法
    HDU 4390 Number Sequence 容斥原理
    HDU 4407 Sum 容斥原理
    HDU 4059 The Boss on Mars 容斥原理
    UVA12653 Buses
    UVA 12651 Triangles
    UVA 10892
    HDU 4292 Food
    HDU 4288 Coder
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1972934.html
Copyright © 2020-2023  润新知