DB2 SQL/XML使用
函数:
XMLPARSE:解析字符或者大对象二进制数据,产生XML
XMLSERIALIZE:将XML值转换为字符或者大对象二进制数据
XMLVALIDATE:根据XML schema校验XML值的有效性
XMLEXISTS:检测XQuery是否返回结果(如由一个或多个项所组成的序列)
XMLQUERY:执行一个XQuery并以一个序列返回结果
XMLTABLE:执行一个XQuery,以关系数据表形式返回结果(如果可能的话)
XMLCAST:XML类型转换
XMLEXISTS:
SELECT name from clients
WHERE xmlexists(
'$c/Client/Address[zip="95116"]'
passing clients.contact as "c"
)
说明:
在WHERE子句中调用XMLEXISTS函数,参数指定了XML路径表达式,DB2据此导航到XML文档邮编元素并且查找值 95116。 “$c/Client/Address”指定了DB2在XML文档中定位邮编元素的路径。美元符号($)用来指定变量。passing clients.contact as "c"对变量c进行定义。这里,“clients”是表名,“contact”是 XML列的列名。换言之,XML文档传递给了变量c。 DB2检索“contact”列中的XML数据,从根节“client”向下,通过节点“Address”到节点“zip”,经过目标邮编匹配检查判断该客户是否居住在目标地区。
在DB2 9.5中进行了简化:
SELECT name from clients
WHERE xmlexists(
'$CONTACT/Client/Address[zip="95116"]'
)
XMLQuery:
SELECT xmlquery('$c/Client/email' passing contact as "c")
from clients
WHERE status = 'Gold'
使用XQuery FLWOR表达式中的for:
SELECT name, xmlquery(
‘for $e in $c/Client/email[1] return $e’
passing contact as “c”
)
from clients
WHERE status = ‘Gold’
SELECT xmlquery('for $e in $c/Client/email[1]/text()
return <p>{$e}</p>'
passing contact as "c")
from clients
WHERE status = 'Gold'
XQuery的FLWOR表达式 FLWOR是几个词首字母的缩写:
FOR:对序列进行迭代
LET:绑定变量
WHERE:定义过滤器
ORDER:将过滤结果排序
RETURN:返回查询结果
实例:
CREATE TABLE dept(deptID CHAR(8),deptdoc XML);
将如下XML文档插入到deptdoc列:
相关文档:
在使用SQL*Plus生成报告文件的时候,往往会因为其默认的设置导致输出的结果非常的没有可读性,下面介绍一个日常中会被用到的一个脚本,其中包含一些格式化
输出的set命令
,为了方便理解,我会在每一条set命令之后紧跟着一个简单的解释,请慢慢体会。
sqlplus -s user_name/user_password << EOF >/dev/n ......
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER proc [dbo].[pr_xls_to_tb]
@path varchar(200),--EXCEL路径名
@tbName varchar(30),--表名
@stName varchar(30) --excel中要读的SHEET名
as
declare @sql varchar(500),--最后要执行的SQL
@stName_Real varchar(35),--真正的SHEET名
......
1、PL/SQL
Developer记住登陆密码
在使用PL/SQL
Developer时,为了工作方便希望PL/SQL
Developer记住登录Oracle的用户名和密码;
设置方法:PL/SQL
Developer 7.1.2
->tools->Preferences->Oracle->Logon History , “Store
history”是默认勾选的,勾上&ldqu ......
1. SQL优化的原则是:
将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。
调整不良SQL通常可以从以下几点切入:
检查不良的SQL,考虑其写法是否还有可优化内容
检查子查询 考虑SQL子查询是否可以用简单连接的方式进行重新书写  ......
十一、以上函数的部分实例
1:replace 函数
第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么
select replace('lihan','a','b')
& ......