Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91467045
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467046
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467047
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467048
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467049
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467050
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467051
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467052
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467053
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467044
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467055
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467056
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467057
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467058
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467059
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467060
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467061
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467062
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467063
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467064
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467065
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467066
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467067
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467068
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467059
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467070
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467071
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467072
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467073
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467074
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467075
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467076
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467077
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467078
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467079
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467080
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467081
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467082
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467083
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467074
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467085
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467086
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467087
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467088
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467089
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467090
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467091
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467092
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467093
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467094
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467095
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks

DB2 9 基础(730 考试)认证指南,第 7 部分: XQuery 简介(8)-sdccf-ChinaUnix博客
  • 博客访问: 91467096
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 22:14:11

developerWorks



“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116323) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116320) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116319) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116318) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116317) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116315) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116313) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116312) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116310) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116304) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116303) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116302) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116301) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116297) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116294) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116292) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116291) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116290) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116289) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116288) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116287) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116286) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116285) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116283) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116282) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116280) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116276) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116275) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


“混合型” 查询

您已经看到了如何编写 XQuery 来检索 XML 文档片段、创建 XML 输出的新形式以及根据在查询本身指定的条件返回不同的输出。这些都是查询 DB2 中存储的 XML 数据的简单方法。

您要知道,关于 XQuery 要学习的内容远比本教程讨论的多得多。但是,有一个主题是我们不能忽略的:如何编写同时包含 SQL 和 XQuery 表达式的查询。如果需要让查询同时根据 XML 和非 XML 列值进行过滤,那么就需要掌握这种技术。

因为本教程主要关注 XQuery 并将它用作顶级语言,所以我们先研究如何将 SQL 嵌入 XQuery 中。但一定要注意,也可以采用相反的做法 —— 将 XQuery 嵌入 SQL 中。在本教程末尾,您会看到这种做法的一个简短示例。但是,关于 SQL/XML 以及如何将 XQuery 嵌入 SQL 中的更多信息,请参见 参考资料

要将 SQL 嵌入 XQuery 中,需要使用 db2-fn:sqlquery 函数替代 db2-fn:xmlcolumn 函数。db2-fn:sqlquery 函数执行一个 SQL 查询并只返回选择的数据。传递给 db2-fn:sqlquery 的 SQL 查询必须只返回 XML 数据;这使 XQuery 能够进一步处理 SQL 查询的结果。

我们用一个示例将已经讨论的许多概念结合起来。假设希望获得住在 San Jose 的 Gold 客户的所有电子邮件地址。如果一个客户有多个电子邮件地址,那么希望这些地址在输出中是同一个记录的组成部分。最后,如果符合条件的 Gold 客户没有提供电子邮件地址,那么希望检索他的邮政地址。编写这样的查询的一种方法如下:



                    
xquery 
for $y in 
db2-fn:sqlquery('select contactinfo from clients where status=''Gold'' ')/Client
where $y/Address/city="San Jose"
return (
     if ($y/email) then {$y/email}
     else $y/Address   
)

我们仔细看看第三行,这里嵌入了一个 SQL 语句。这个 SELECT 语句包含一个基于 status 列的查询谓词,将这个 VARCHAR 列的值与字符串 Gold 进行比较。在 SQL 中,这样的字符串要包围在单引号中。尽管这个示例看起来似乎使用了双引号,但实际上是在比较值前后使用了两个单引号(''Gold'')。“额外的” 单引号是转义字符。如果在基于字符串的查询谓词外使用双引号代替单引号,就会出现语法错误。

这个查询的输出是:



                    

	
		love2shop@yahoo.com
	

1204 Meridian Ave. 4A San Jose CA 95124

一定要注意,也可以将 XQuery 嵌入 SQL 中。实际上,DB2 9 提供了对标准 SQL/XML 函数的支持,这些函数常常用来构造以 SQL 为最外层(即顶级)语言的混合型查询。尽管详细讨论 DB2 的 SQL/XML 支持超出了本教程的范围,但至少有两个函数值得注意:

XMLExists
允许导航到 XML 文档中的一个元素(或其他类型的节点)并对特定的条件进行测试。在 SQL WHERE 子句中指定时,XMLExists 将返回的结果限制为那些包含满足指定条件(即指定的条件为 “true”)的 XML 文档的行。您可能猜到了,应该将 XQuery 表达式作为输入传递给 XMLExists 函数,从而导航到文档中感兴趣的节点。
XMLQuery
允许将 XML 放到 SQL/XML 查询返回的 SQL 结果集中。它通常用来从 XML 文档中检索一个或多个元素。同样,XMLQuery 函数也以 XQuery 表达式作为输入。

考虑以下查询。这个查询将 SQL 用作顶级语言并包含对 XMLQueryXMLExists 函数的调用:



                    
select name, status,
xmlquery('$c/Client/phone/home' passing contactinfo as "c") 
from clients 
where xmlexists('$y/Client/Address[zip="95032"]' passing contactinfo as "y")

这个查询返回的结果集包括客户姓名、状态和家庭电话号码列。前两列包含 SQL VARCHAR 数据,第三列包含从符合条件的 XML 文档中提取的一个 XML 元素。我们来仔细看看这个查询的第二行和第四行。

第二行在 SELECT 子句中调用 XMLQuery,这表示这个函数返回的结果应该作为 SQL 结果集中的一列。我们指定一个 XQuery 路径表达式作为这个函数的输入,这个表达式让 DB2 导航到 Client 元素下面的 phone 元素的 home 子元素。这个路径表达式引用一个变量($c),这个变量引用 contactinfo 列。

第四行在 SQL WHERE 子句中调用 XMLExists,这表示 DB2 应该根据一个 XML 谓词对结果进行限制。这个谓词是在路径表达式中指定的,它表示我们只对具有特定邮政编码的客户感兴趣。同样,作为这个 SQL/XML 函数的输入提供的路径表达式定义一个变量(在这个示例中是 $y),这个变量标识 DB2 将在哪里寻找 XML 文档(在 contactinfo 列中)。

对于 示例数据,这个查询的输出是一个单行的结果集,其值如下:



                    
Lisa Hansen         Silver    4083332222

关于 DB2 的 SQL/XML 支持的更多信息,参见 参考资料

阅读(116273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~