ORACLE中函数
 
 
      Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型。常见的有两类,单行函数和分组函数 。

单行函数:

单行函数

分类 函数 功能 示例
字符函数 LPAD(<c1>,<i>[,<c2>]) 在字符串c1的左边添加字符串c2直到c1字符串的长度等于i。

SELECT  LPAD('Hello!',9,1) leftpad,RPAD('Hello!',8,2) rightpad FROM DUAL

 

RPAD(<c1>,<i>[,<c2>]) 在字符串c1的右边添加字符串c2直到c1字符串的长度等于i。
LOWER(<c1>) 把字符串c1转换为小写 SELECT LOWER('ename') one,UPPER('ename') two, INITCAP('ename') FROM dual
UPPER(<c1>) 把字符串c1转换为大写
INITCAP(<c1>) 把c1字符串的每一个单词的第一个字母转换成大写字母
LENGTH(<c1>) 返回字符串c1的长度 SELECT LENGTH('How are you') FROM DUAL
SUBSTR(<c1>,<i>[,<j>]) 返回字符串c1中从第i个位置开始的j个字符(向右)。如果省略j,则返回c1中从第i个位置开始的所有字符。如果j为负,则返回字符串c1中从第i个位置开始的j个字符(向左)。 SELECT SUBSTR('Hello,World',1,5) FROM DUAL
INSTR(<c1>,<c2>[,<i>[,<j>]]) 在c1中从位置i开始查找c2在c1中出第j次的位置,i可以为负(此时,从c1的尾部开始)。

SELECT INSTR('Mississippi','i',3,3) FROM DUAL; 返回结果11。

SELECT INSTR('Mississippi','i',-2,3) FROM DUAL; 返回结果2。

 

LTRIM(<c1>,<c2>) 从c1前面开始去掉出现在c2的中任何前导字符集。  SELECT LTRIM('Mississippi','Mis') FROM DUAL ; 返回结果’ppi’。

SELECT RTRIM('Mississippi','ip') FROM DUAL; 返回结果’Mississ’。
 

RTRIM(<c1>,<c2>) 从c1后面开始去掉出现在c2的中任何前导字符集。
数学函数 ABS(<n>) 返回n的绝对值  SELECT ABs(-2),ABS(2) FROM DUAL;
ROUND(<n1>,<n2>) 将n1的小数点后保留n2位(四舍五入)并返回。如果n2小于零,n1舍入到小数点左边。

SELECT ROUND(12345.678,-2),ROUND(12345.678,2) FROM  DUAL;

分别返回结果:12300,12345.68。

 

CEIL(<n>) 将n 向上取整,并返回。

SELECT CEIL(5.1),CEIL(-21.4) FROM  DUAL;

分别返回:6, -21。

 

FLOOR(<n>) 将n 向下取整,并返回。

SELECT FLOOR(5.1),FLOOR(-21.4) FROM  DUAL;

分别返回:5, -22。

 

MOD(<n1>,<n2>) 返回n1模n2后的余数。

SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;

分别返回结果:4,8,-1。

 

SIGN(<n>)

符号函数,n>0,返回1。

n<0,返回-1。

n=0,返回0。

 

SELECT SIGN(-2.3),SIGN(2.3),SIGN(0) FROM DUAL;
返回结果:-1,1,0
SQRT(<n>) 返回n的平方根 SELECT SQRT(9) FROM DUAL;  返回结果:3
TRUNC(<n1>,<n2>) 功能类似ROUND函数。但不做四舍五入。

SELECT TRUNC(123.456,2),TRUNC(123.456,-1) FROM DUAL;

分别返回结果:123.45、120。

 

VSIZE(n) 返回数字n的存储字节 SELECT VSIZE(123) FROM DUAL; 返回:3
日期函数(日期可以进行算术运算) SYSDATE 返回系统日期 SELECT SYSDATE FROM DUAL;
ADD_MONTHS(<d>,<i>) 返回日期d 加上i个月后的新日期(i正可负)。

SELECT SYSDATE, ADD_MONTHS(SYSDATE,2),ADD_MONTHS(SYSDATE,-2) FROM DUAL

 

LAST_DAY(<d>) 返回日期d所在的月的最后一天。 SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL
MONTHS_BETWEEN(<d1>,<d2>) 返回日期d1比d2大多少月数。 SELECT MONTHS_BETWEEN(’19-Dec-1999’,’19-Mar-2000’ FROM DUAL;
NEW_TIME(<d>,<tz1>,<tz2>) 将时区tz1的时间d,转换为时区tz2里的时间。 SELECT SYSDATE,NEW_TIME(SYSDATE,’CDT’,’PDT’) FROM DUAL;
NEXT_DAY(<d>,<dow>) 返回日期d后的第一个dow。(dow:day of week) SELECT NEXT_DAY(SYSDATE,’Monday’) FROM DUAL;
常用转换函数 TO_CHAR(<x>[,<fmt>[,<nlsparm>]]) 将x转换成字符串。(参数含义请看ORACLE的联机帮助) SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
TO_NUMBER(<c>[,<fmt>[,<nlsparm>]]) 将字符串c转换成数字。(参数含义请看ORACLE的联机帮助)  SELECT TO_NUMBER('123') FROM DUAL ;

TO_DATE(<c>[,<fmt>[,<nlsparm>]])

(常见的日期格式请查联机帮助。)

将字符串c转换成日期。 SELECT TO_DATE(’19-Mar-99’,’DD-Mon-YYYY’) FROM DUAL;
两个重要函数

DECODE(<x>,<m1>,<r1>[,<m2>,

<r2…>][,<d>])

(DECODE函数功能非常强大,请仔细玩味。)

 

一个功能非常强大的函数,它使得SQL非常高效。它的功能类似于一系列的if…then…else语句。

SELECT sid,serial#,username,

DECODE(command

,0,’None’

,2,’Insert’

,3,’Select’

,6,’Update’

,7,’Delete’

,8,’Drop

,’Other’) cmd

FROM V$SESSION WHERE type<>’BACKGROUND’;

 

NVL(x1,x2)

注意ORACLE中的NULL值,注意该函数作用

 

如果x1为空返回x2,否则返回x1。 SELECT NVL(ename,’无姓名’)  FROM  EMP;

分组函数

  AVG([{DISTINCT|ALL}]<n>) 求返回行的指定列的平均值

SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal)

FROM SCOTT.EMP;

 

COUNT({*|[DISTINCT|ALL]}<x>) 统计返回的行数

SELECT COUNT (*), COUNT(DISTINCT mgr),COUNT(mgr)

FROM SCOTT.EMP

 

MAX([{DISTINCT|ALL}]<x>) 求返回行的指定列的最大值 SELECT MAX(sal),MAX(DISTINCT sal) FROM EMP;
MIN([{DISTINCT|ALL}]<x>) 求返回行的指定列的最小值 SELECT MIN(sal),MIN(DISTINCT sal) FROM EMP;
STDDEV([{DISTINCT|ALL}]<x>) 求返回行的指定列的标准方差 SELECT STDDEV(sal),STDDEV(DISTINCT sal) FROM EMP;
SUM() 求返回行的指定列的和 SELECT SUM(sal) FROM EMP;
VARIANCE() 求返回行的指定列的差异值  

 

 

注意:

A、 分组函数不会处理空值,也不会返回空值;

B、  所有的分组函数既可以作用于指定列的所有值上,也可以只作用于指定列的差异列值上;

C、 当指定ALL选项时,分组函数作用于所有非空列值行上。当指定DISTINCT选项时,分组函数只作用于非空的且具有不同列值的行上(即,重复列值的行只计算一行);

oracle中的函数的更多相关文章

  1. Oracle 中 decode 函数用法

    Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

  2. Oracle中wm_concat()函数的使用

    Oracle中wm_concat()函数的使用 wm_concat()函数是oracle行列转换函数,该函数可以把列值以‘,’分割开来,并显示成一行. 1.原数据: 2.把结果分组以‘|’分隔,以一行 ...

  3. Oracle中trunc函数、round 函数、ceil函数和floor函数的使用

    Oracle中trunc函数.round 函数.ceil函数和floor函数的使用 1.1trunc函数处理数字 trunc函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定 ...

  4. Oracle中REGEXP_SUBSTR函数(转)

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','2 ...

  5. Oracle中sign函数和decode函数的使用

    Oracle中sign函数和decode函数的使用 1.比较大小函数SIGN sign(x)或者Sign(x)叫做 符号函数,其功能是取某个数的符号(正或负): 当x>0,sign(x)=1; ...

  6. oracle中extract()函数----用于截取年、月、日、时、分、秒

    oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 语法如下: extract ( { year | month | day ...

  7. oracle中使用函数控制过程是否执行(结合job使用)

    oracle中使用函数控制过程是否执行(结合job使用时候,循环时间不好写的时候,可以此种方法比较方便) CREATE OR REPLACE FUNCTION wsbs_pk_date_validat ...

  8. Oracle中SYS_CONNECT_BY_PATH函数的妙用 ;

    Oracle 中SYS_CONNECT_BY_PATH函数是非常重要的函数,下面就为您介绍一个使用SYS_CONNECT_BY_PATH函数的例子,实例如下: 数据准备: ),b )); ', 'A' ...

  9. oracle中floor函数和to_number函数区别

     oracle中floor函数没有值默认是0,number函数没有值默认是空 

  10. Oracle中REGEXP_SUBSTR函数(字符串转多行)

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...

随机推荐

  1. (leetcode) countandsay

    class Solution { public: string calcuate(string s) { string result; char pre = s[0]; int cnt = 1; fo ...

  2. Subset---poj3977(折半枚举+二分查找)

    题目链接:http://poj.org/problem?id=3977 给你n个数,找到一个子集,使得这个子集的和的绝对值是最小的,如果有多种情况,输出子集个数最少的: n<=35,|a[i]| ...

  3. 美团、点评、猫眼App下拉加载效果的源码分享

    今天我准备拿大众点评.美团.猫眼电影三款App的实例来分享一下APICloud下拉加载这个模块的效果. 美团App下拉加载效果   以美团中的下拉酷似动画的萌萌着小人儿效果作为参考,来实现的一个加载模 ...

  4. 解决MyEclipse吃内存以及卡死的方法

    前言:MyEclipse5.5 大小 139M:MyEclipse6.5 大小 451M:MyEclipse7.0 大小 649M!下载服务器又是国外的...下载速度累人也就罢了,只要你工作性能一流. ...

  5. Scanner类的使用

    Scanner类的使用 (接受键盘输入) java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java AP ...

  6. [RGEOS]支持栅格数据读取和显示

    SharpMap真的很强大,这里通过改造GdalRasterLayer类实现了在RGeos项目中支持栅格图像的读取和显示,同时支持影像的无级缩放. GdalRasterLayer通过读取FWTools ...

  7. Git和SSH协议

    SSH(安全外壳协议)为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定:SSH为建立在应用层和传输层基础上的安全协议.SSH是目前较可靠, ...

  8. TOM大叔的几道Javascript题目与解答

    几道JS题目 之前没有深入研究js语言,最近几年前端越来越工程化,需要扎实的js基础,看到博客园上有很多大牛分享JS学习文章,幸运看到tom大叔的blog,抽时间潜心学习了其文章,遇到到其出的几道题目 ...

  9. Java基础之处理事件——选项按钮的鼠标监听器(Lottery 2 with mouse listener)

    控制台程序. 定义监听器类有许多方式.下面把监听器类定义为单独的类MouseHandler: // Mouse event handler for a selection button import ...

  10. IOS Suppot Font 苹果默认支持的字体一览2(普通,加粗,倾斜)