Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104570474
  • 博文数量: 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博客
  • 博客访问: 104570475
  • 博文数量: 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博客
  • 博客访问: 104570476
  • 博文数量: 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博客
  • 博客访问: 104570477
  • 博文数量: 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博客
  • 博客访问: 104570478
  • 博文数量: 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博客
  • 博客访问: 104570479
  • 博文数量: 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博客
  • 博客访问: 104570480
  • 博文数量: 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博客
  • 博客访问: 104570481
  • 博文数量: 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博客
  • 博客访问: 104570482
  • 博文数量: 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博客
  • 博客访问: 104570483
  • 博文数量: 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博客
  • 博客访问: 104570474
  • 博文数量: 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博客
  • 博客访问: 104570485
  • 博文数量: 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博客
  • 博客访问: 104570486
  • 博文数量: 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博客
  • 博客访问: 104570487
  • 博文数量: 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博客
  • 博客访问: 104570488
  • 博文数量: 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博客
  • 博客访问: 104570489
  • 博文数量: 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博客
  • 博客访问: 104570490
  • 博文数量: 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博客
  • 博客访问: 104570491
  • 博文数量: 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博客
  • 博客访问: 104570492
  • 博文数量: 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博客
  • 博客访问: 104570493
  • 博文数量: 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博客
  • 博客访问: 104570494
  • 博文数量: 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博客
  • 博客访问: 104570495
  • 博文数量: 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博客
  • 博客访问: 104570496
  • 博文数量: 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博客
  • 博客访问: 104570497
  • 博文数量: 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博客
  • 博客访问: 104570498
  • 博文数量: 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博客
  • 博客访问: 104570489
  • 博文数量: 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博客
  • 博客访问: 104570500
  • 博文数量: 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博客
  • 博客访问: 104570501
  • 博文数量: 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博客
  • 博客访问: 104570502
  • 博文数量: 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博客
  • 博客访问: 104570503
  • 博文数量: 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博客
  • 博客访问: 104570504
  • 博文数量: 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博客
  • 博客访问: 104570505
  • 博文数量: 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博客
  • 博客访问: 104570506
  • 博文数量: 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博客
  • 博客访问: 104570507
  • 博文数量: 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博客
  • 博客访问: 104570508
  • 博文数量: 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博客
  • 博客访问: 104570509
  • 博文数量: 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博客
  • 博客访问: 104570510
  • 博文数量: 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博客
  • 博客访问: 104570511
  • 博文数量: 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博客
  • 博客访问: 104570512
  • 博文数量: 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博客
  • 博客访问: 104570513
  • 博文数量: 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博客
  • 博客访问: 104570504
  • 博文数量: 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博客
  • 博客访问: 104570515
  • 博文数量: 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博客
  • 博客访问: 104570516
  • 博文数量: 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博客
  • 博客访问: 104570517
  • 博文数量: 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博客
  • 博客访问: 104570518
  • 博文数量: 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博客
  • 博客访问: 104570519
  • 博文数量: 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博客
  • 博客访问: 104570520
  • 博文数量: 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博客
  • 博客访问: 104570521
  • 博文数量: 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博客
  • 博客访问: 104570522
  • 博文数量: 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博客
  • 博客访问: 104570523
  • 博文数量: 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博客
  • 博客访问: 104570524
  • 博文数量: 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博客
  • 博客访问: 104570525
  • 博文数量: 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 支持的更多信息,参见 参考资料

阅读(119290) | 评论(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 支持的更多信息,参见 参考资料

阅读(119289) | 评论(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 支持的更多信息,参见 参考资料

阅读(119288) | 评论(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 支持的更多信息,参见 参考资料

阅读(119287) | 评论(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 支持的更多信息,参见 参考资料

阅读(119286) | 评论(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 支持的更多信息,参见 参考资料

阅读(119285) | 评论(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 支持的更多信息,参见 参考资料

阅读(119284) | 评论(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 支持的更多信息,参见 参考资料

阅读(119283) | 评论(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 支持的更多信息,参见 参考资料

阅读(119282) | 评论(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 支持的更多信息,参见 参考资料

阅读(119281) | 评论(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 支持的更多信息,参见 参考资料

阅读(119280) | 评论(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 支持的更多信息,参见 参考资料

阅读(119279) | 评论(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 支持的更多信息,参见 参考资料

阅读(119278) | 评论(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 支持的更多信息,参见 参考资料

阅读(119277) | 评论(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 支持的更多信息,参见 参考资料

阅读(119276) | 评论(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 支持的更多信息,参见 参考资料

阅读(119275) | 评论(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 支持的更多信息,参见 参考资料

阅读(119274) | 评论(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 支持的更多信息,参见 参考资料

阅读(119273) | 评论(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 支持的更多信息,参见 参考资料

阅读(119272) | 评论(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 支持的更多信息,参见 参考资料

阅读(119271) | 评论(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 支持的更多信息,参见 参考资料

阅读(119270) | 评论(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 支持的更多信息,参见 参考资料

阅读(119269) | 评论(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 支持的更多信息,参见 参考资料

阅读(119268) | 评论(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 支持的更多信息,参见 参考资料

阅读(119267) | 评论(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 支持的更多信息,参见 参考资料

阅读(119266) | 评论(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 支持的更多信息,参见 参考资料

阅读(119265) | 评论(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 支持的更多信息,参见 参考资料

阅读(119264) | 评论(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 支持的更多信息,参见 参考资料

阅读(119263) | 评论(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 支持的更多信息,参见 参考资料

阅读(119262) | 评论(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 支持的更多信息,参见 参考资料

阅读(119261) | 评论(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 支持的更多信息,参见 参考资料

阅读(119260) | 评论(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 支持的更多信息,参见 参考资料

阅读(119259) | 评论(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 支持的更多信息,参见 参考资料

阅读(119258) | 评论(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 支持的更多信息,参见 参考资料

阅读(119257) | 评论(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 支持的更多信息,参见 参考资料

阅读(119256) | 评论(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 支持的更多信息,参见 参考资料

阅读(119255) | 评论(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 支持的更多信息,参见 参考资料

阅读(119254) | 评论(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 支持的更多信息,参见 参考资料

阅读(119253) | 评论(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 支持的更多信息,参见 参考资料

阅读(119252) | 评论(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 支持的更多信息,参见 参考资料

阅读(119251) | 评论(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 支持的更多信息,参见 参考资料

阅读(119250) | 评论(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 支持的更多信息,参见 参考资料

阅读(119249) | 评论(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 支持的更多信息,参见 参考资料

阅读(119248) | 评论(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 支持的更多信息,参见 参考资料

阅读(119247) | 评论(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 支持的更多信息,参见 参考资料

阅读(119246) | 评论(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 支持的更多信息,参见 参考资料

阅读(119245) | 评论(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 支持的更多信息,参见 参考资料

阅读(119244) | 评论(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 支持的更多信息,参见 参考资料

阅读(119243) | 评论(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 支持的更多信息,参见 参考资料

阅读(119242) | 评论(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 支持的更多信息,参见 参考资料

阅读(119241) | 评论(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 支持的更多信息,参见 参考资料

阅读(119240) | 评论(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 支持的更多信息,参见 参考资料

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