ORACLE函数介绍(8)-综述-ZT

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4  

ORACLE函数介绍

第八篇 综述   2007.8.13

 

  通过前面章节的练习我们可以对三类函数特征做些描述。

l         单值函数多数处理单个或多个值但只返回单个值(SYS_CONNECT_BY_PATH除外)

l         聚合函数多数处理多行并且各分组序列分别返回成一行。

l         分析函数多数处理多行并且每条记录均会有返回。

 

  需要注意不同类型函数可被应用的范围。

l         单值函数可应用范围最为广泛,select语句中的每一处都可被嵌入。

l         聚合函数通常会配合group by被应用于selecthaving子句,

l         分析函数只能应用于selectorder by子句。

 

 

  虽然我们前面介绍了百十多个函数,可是仍然并非全部,并且即使是我们介绍到的,也不能说所有函数都已经介绍了其全部的特色,比如:对于substrlengthinstrlike)等均有扩展形式。比如

l         substr:以字符为单位

l         substrb:以字节为单位

l         substrc:unicode完全字符为单位

l         substr2:UCS2代码点为单位

l         substr4:UCS4代码点为单位

 

  它们对于字符的处理方式都是一致的,只不过在我们看来相同的字符在它们看来可能就不同,这就是不同编码的原因。关于unicode,ucs代码概念介绍可以看看这里:http://www.vscodes.com/article/5/104/2227.html

 

 

  Oracle中函数功能强大,分类细致,某些地方构思异常巧妙。

 

一、参数中的小数点

我们以CEIL为例

SELECT CEIL(12.8) FROM DUAL;

值是什么?

 

二、负数也有学问

我们先以LPAD函数为例。一个非常简单的补值单值函数。

SELECT LPAD('Let us go!',5,'-') FROM DUAL;

猜猜这个会返回什么值呢?

 

SELECT LPAD('Let us go!',20,'-') FROM DUAL;

猜猜这个又会返回什么值呢?

 

SELECT LPAD('Let us go!',-5,'-') FROM DUAL;

再猜猜这个会返回什么值呢?

 

再以SUBSTR为例:

SELECT SUBSTR('Let us go!',-5,5) FROM DUAL;

这个将要返回什么值呢?

 

SELECT SUBSTR('Let us go!',-5,-5) FROM DUAL;

这个又将会返回什么值呢?

 

 

三、小心隐藏参

我们仍然以LPAD为例:

SELECT LPAD('Let us go!',20) FROM DUAL;

猜猜这个返回什么值呢?

 

SELECT SUBSTR('Let us go!',-5) FROM DUAL;

这个将要返回什么值呢?

 

SELECT TRUNC(12.8251) FROM DUAL;

这个又将会返回什么值呢?

 

  诸如此类在oracle的函数中是比比旨是,比如:substr,instr,trim等等~~~~个中奥妙还需个自体会。

 

Oracle中还提供了一批函数用来操纵xml数据,比如:XMLAGG,XMLCOLATTVAL,XMLCONCAT,XMLFOREST,XMLSEQUENCE,XMLTRANSFORM,EXTRACT(XML),UPDATEXML等,功能强悍,不过演示环境搭建稍嫌复杂,三言二语也说不清楚,我这里就不多做介绍了。感兴趣的话可以查看oracle官方文档或者直接跟我交流。

 

如果以上种种仍然不能满足你的需求,你还可以通过自己创建function的方式来实现,创建的语法格式非常简单,不属于本章内容就不多做介绍了,如果你想找个示例的话,俺之前写过一个oracle下的邮件发送有相关示例可供你参考,地址如下:http://www.itpub.net/825426.html

 

  最后补充一句再强大的功能,还是需要能够灵活使用才能够体现其价值,所以了解并不是我们的目地,熟练应用才是我们的目标:)。

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/293106/viewspace-580562/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/293106/viewspace-580562/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值