文档章节

oracle中一些常用函数

深圳大道
 深圳大道
发布于 2016/12/29 15:36
字数 1323
阅读 3
收藏 0
Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型。常见的有两类,单行函数和分组函数 。 

单行函数: 

单行函数 

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

FROM DUAL; 

  

RPAD(<c1>,<i>[,<c2>]) 在字符串c1的右边添加字符串c2直到c1字符串的长度等于i。 
LOWER(<c1>) 把字符串c1转换为小写 SELECT LOWER(ename) one,UPPER(ename) two, INITCAP(ename) FROM EMP; 
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 ABC(-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,0.5,-1。 

  

SIGN(<n>) 符号函数,n>0,返回1。 

n<0,返回-1。 

n=0,返回0。 

  
SELECT SIGN(-2.3),SIGN(2.3),SIGN(0) FROM DUAL; 
SQRT(<n>) 返回n的平方根 SELECT SQRT(9) FROM DUAL; 
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; 
日期函数(日期可以进行算术运算) 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>]]) 
TO_DATE(EFFECTDATE,'YYYY-MM-DD')

(常见的日期格式请查联机帮助。) 
将字符串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'; 

NVL2(expr1,expr2,expr3) 

  功能:如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。  

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() 求返回行的指定列的差异值


 

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/7925774

共有 人打赏支持
深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
玩转大数据系列之Apache Pig如何通过自定义UDF查询数据库(五)

GMV(一定时间内的成交总额)是一个衡量电商网站营业收入的一项重要指标,例如淘宝,京东都有这样的衡量标准,感兴趣的朋友可以自己科普下这方面的概念知识。 当然散仙今天,并不是来解释概念的...

九劫散仙
2015/03/12
0
0
11g中利用listagg函数实现自动拼接INSERT语句

本来今天想继续写另一篇外传,但总是熬这么晚不是个事儿,况且今儿北京又输了,恨铁不成钢,堵得慌。。。 白天工作忙,晚上看娃睡了之后才有一些时间可以随便写一些,总结一下,记录一下,算...

bisal
2016/12/29
0
0
SQL优化常用方法34

避免在索引列上使用NOT 通常, 我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的影响. 当ORACLE"遇到"NOT,他就会停止使用索引转而执行全表扫描. 举例: 低效: (这里,不使...

inzaghi1984
2017/12/16
0
0
php程序员应该掌握的10个技能

1、语法:必须熟练掌握 ,写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。 2、命令:必须熟悉PHP带的一些常用命令及其常用选项,熟悉那些...

忆童
2012/02/14
0
0
Oracle遇到的一些问题.

1> 删除时遇到子表外键的问题 [Err] ORA-02292: integrity constraint (xxx.SYS_C0012081) violated - child record found -->xxx.SYS_C0012081表示约束id. 解决思路: 1,先找到这个约束ID对应......

leon_tan
2016/11/28
9
0

没有更多内容

加载失败,请刷新页面

加载更多

导出表格

https://blog.csdn.net/hhzzcc_/article/details/80419396

Js_Mei
9分钟前
0
0
Ubuntu中安装Elasticsearch

1.安装jre elasticsearch是使用java开发的搜索引擎,因此其运行依赖于java runtime environment,我们在这里不使用Oracel的官方jre,改为使用open-jre。 运行环境: ubuntu:18.04 jre:openj...

cloes
26分钟前
0
0
nginx rails 详细站点配置入门教程

Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和反馈,到封装数据库的模型,R...

xiangyunyan
55分钟前
3
0
Shiro

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

嘿嘿嘿IT
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部