Oracle常用函数

  • Post author:
  • Post category:其他


Oracle常用函数一般分为两大类,包括单行函数(分为

系统函数,

转换函数以及其他函数


)和多行函数(又称为分组函数或者聚合函数)。

一.系统函数:主要分为字符处理型函数,数值处理型函数和日期处理型函数

1.常用字符处理型函数:字符串必须使用单引号。

(1).首字母大写:INITCAP(String)

功能:将String中的每个单词的首字母都转化为大写,其他字母都转化为小写,非英文字母或者已经符合格式的英文字母保持不变,每个单词之间以.或者空格分隔开,最后返回处理后的新字符串。

示例:

SELECT INITCAP ('my name is mr.bean')FROM DUAL;   -- FROM DUAL,把返回的结果在虚拟表DUAL中展示

执行结果:

(2).大小写转换函数:

a.小写转大写:UPPER(String)

功能:将String中的所有英文字母转化为大写,本身就是大写字母或者非英文字母则保持不变,最后返回处理后的新字符串。

b.大写转小写:LOWER(String)

功能:  将String中的所有英文字母转化为小写,本身就是小写字母或者非英文字母则保持不变,最后返回处理后的新字符串。

示例:

SELECT UPPER ('my name is mr.bean')FROM DUAL;  --小写转大写
SELECT LOWER ('MY NAME IS MR.BEAN')FROM DUAL;  --大写转小写

执行结果:



(3).清除左右空格:

a.用法一:TRIM(String)

功能:将String左右两端的空格全部清除,返回清除之后的字符串。

示例:

SELECT TRIM (' my name is mr.bean      ')FROM DUAL;

执行结果:


b.用法二:TRIM(‘某单个字符’ FROM String)

(这里必须是单个字符)

功能:删除String中出现的某单个字符,返回删除后的字符串。

示例1:

SELECT TRIM(TRAILING 'm' FROM 'my name is mr.beanmm')FROM DUAL;--删除String右端第一个与单个字符'm'相匹配的字符,若'm'连续出现则全部删除,
--若'm'不连续出现则只删除端第一个(注意,若String端第一个字符与目标字符不匹配,则保持原字符串不变返回)

执行结果:


示例2:

SELECT TRIM(LEADING 'm' FROM 'mmy name is mr.bean')FROM DUAL;--删除String端第一个与单个字符'm'相匹配的字符,若'm'连续出现则全部删除,
--若'm'不连续出现则只删除端第一个(注意,若String端第一个字符与目标字符不匹配,则保持原字符串不变返回)

执行结果:


示例3:

SELECT TRIM(BOTH 'm' FROM 'mmy name is mr.beanmmm ')FROM DUAL; --删除String左右两端连续的字符'm',若'm'连续出现则全部删除,
--若'm'不连续出现则只删除两端的第一个(注意,若String两端的第一个字符与目标字符不匹配,则保持原字符串不变返回;
--此外,这个函数只能删除左右两端第一个开始连续的字符'm',并不能删除String中的不连续的字符'm')。

执行结果:


示例4:

SELECT TRIM('m' FROM 'mmy name is mr.beanmmm')FROM DUAL;--若参数中不写BOTH/LEADING/TRAILING 关键字,那么默认为BOTH

执行结果:


(4).获取字符串长度: LENGTH(String)

功能:直接返回字符串的实际长度,包括空格符。

SELECT LENGTH ('My Name Is Mr.Bean') FROM DUAL; 

执行结果:


(5).左右裁剪函数:

a.左裁剪:

用法一:LTRIM(String1,String2)

功能:从String1的左边第一个字符开始扫描,扫描出String1中的【在String2中已经出现过的】并且【连续出现在String1中的】字符(一旦扫描到在String2中没有出现的字符就停止扫描),再删除这些字符,返回删除之后的新字符串。

注意:返回结果与STRING2中的字符顺序无关,只要连续遇到

在String2中出现过的

字符,就删除这些字符;

如果String1左边第一个字符没有在String2中出现过,那么直接原样返回String1 ;

如果String1中所有字符都没在String2中出现过,那么直接原样返回String1 ;

如果String1中所有字符都在String2中出现过,那么直接返回空。

示例:

SELECT LTRIM('HELLO WORLD','LEH')FROM DUAL;

执行结果:


用法二:LTRIM(String)

功能:用于清除String左端连续的空格符。

示例:

SELECT LTRIM('    Bill')FROM DUAL;

执行结果:


b.右裁剪:

用法一:RTRIM(String1,String2)

功能:从String1的右边第一个字符开始扫描,扫描出String1中的【在String2中已经出现过的】并且【连续出现在String1中的】字符(一旦扫描到在String2中没有出现的字符就停止扫描),再删除这些字符,返回删除之后的新字符串。

注意:返回结果与STRING2中的字符顺序无关,只要连续遇到

在String2中出现过的

字符,就删除这些字符;

如果String1右边第一个字符没有在String2中出现过,那么直接原样返回String1 ;

如果String1中所有字符都没在String2中出现过,那么直接原样返回String1 ;

如果String1中所有字符都在String2中出现过,那么直接返回空。

示例:

SELECT RTRIM('HELLO WORLD','LRD')FROM DUAL;

执行结果:


用法二:RTRIM(String)

功能:用于清除String左端连续的空格符。

示例:

SELECT RTRIM('   科比  ok    ')FROM DUAL;

执行结果:


(6).替换字符串函数: REPLACE(String1,String2,String3)

功能:在String1中搜索String2,并用String3替换String2,最后返回替换后的新字符串。String2和String3都可以是单个字符。

示例:

SELECT REPLACE('Hello World','l','L') FROM DUAL; 

执行结果:


注意:String3可以为NULL或者”,此时效果相当于删除String1中的String2。但String2不能为NULL或者”,因为这样对String1没有任何效果。

(7).查找字符串位置:

用法一:INSTR(String1,String2)

功能:返回String2在String1中的位置下标,String1和String2都可以是单个字符。当String2是多个字符时,返回的是String2中第一个字符的下标;如果String2不存在于String1中,则返回0。(注意,oracle中字符串的位置下标是从1开始的。)

示例:

SELECT INSTR('Hello,world!','world')FROM DUAL;

执行结果:


用法二:INSTR(String1,String2[,a,b])

功能:在String1中从下标a开始查找String2,返回第b次找到String2时的位置下标,若找不到就返回0。

示例:

SELECT INSTR('ORACLE TRANING','RA',1,2) INSTRING FROM DUAL; 

执行结果:


注意:

若a>0则从左到右查找,若a<0则从右到左查找。


当String2中有多个字符时,返回的结果是String2中第一个字符的下标。

(8).截取字符串: SUBSTR(String,p[,q])

功能:在字符串String中从下标p(包含p)开始截取,若指定q值,则从下标p处的字符开始截取q个字符;若不指定q值,则默认从p开始截取到String末尾。

示例:

SELECT SUBSTR('HELLO',3,4)FROM DUAL;

执行结果:


(9).字符串连接函数:CONCAT(String1,String2)

功能:将两个字符串连接在一起,相当于’||’,最后返回连接后的新字符串。

示例:

SELECT CONCAT('HELLO,','WORLD') FROM DUAL;

执行结果:


(10).获取字母的ASCII码: ASCII(‘a’)  直接返回相应字母的ASCII码值。

2.常用数值处理函数

(1).取绝对值:ABS(num),返回num的绝对值

(2).向上取整:CEIL(num),返回大于或者等于num的最小整数

(3).向下取整:FLOOR(num),返回小于或者等于num的最大整数

(4).求幂:POWER(n1,n2), n1为底数,n2为幂

(5).四舍五入:ROUND(num[,n]),返回四舍五入的结果

注意:若不指定n值,则默认返回保留整数的结 果,若指定了n值,则返回保留小数点后n位的结果

(6).求平方根:SQRT(num),返回num的平方根

(7).取余函数:MOD(x,y), 返回x除以y取余的结果

3.常用日期处理函数

(1).获取系统当前日期:SELECT SYSDATE FROM DUAL;

执行结果:


(2).返回日期差:MONTHS_BETWEEN(a,b),返回两个日期之间的月份差

示例:

SELECT MONTHS_BETWEEN(SYSDATE,'11-3月-18') FROM DUAL;

执行结果:


(3).返回在指定日期的基础上增加或减少月数后的日期值:

ADD_MONTHS(a,n),在日期a的基础上增加n个月,返回从a日期开始n个月后的日期

示例:

SELECT ADD_MONTHS(SYSDATE,7) FROM DUAL;

执行结果:


注意:若n为负值,则返回距离a日期n个月之前的日期值;若n等于0,则返回原日期值a。

另外没有ADD_DAYS和ADD_YEARS函数。

(4).返回指定日期后第一个星期几的日期:NEXT_DAY(a,’星期三’),返回日期a之后的第一个星期三的日期

示例:

SELECT NEXT_DAY(SYSDATE,'星期三')FROM DUAL;

执行结果:


注意:只能写成’星期几’的格式,不能写成’周几’或者’礼拜几’,周日只能写成’星期日’,不能写成’星期天’。



版权声明:本文为equxiangxiangtiange原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。