oracle常用函数总结(一)

最近在读数据库存储过程,或者在xml里写sql时用到数据库函数,笔者觉得有必要总结一下,当然有的函数笔者也很懵逼,不过可以问度娘啊!好了!开始正题。

select nvl(null,1)s from dual;--1 若nvl第一个参数为空或'',则返回第二个元素
select nvl2(null,2,1)s from dual;--1 若nvl2 第一个元素为空或'',则返回第二个元素

select decode('',111,1000,200,2000,0)s from dual;--如果seed为111,则取1000;为200,取2000;其它取0

select instr('lidelinlidelin','i',3,3)s from dual;--13 查找i在字符串从第三个位置起第三次出现的下标
select instr('lidelinlidelin','w',3)s from dual;--0 查找w在字符串从第三个位置起第一次出现的下标

select substr('lidelinlidelin',2,3)s from dual;--ide 截取字符串,从第二个开始,取三个

select length('delin Li') s from dual;--8 查看字符串长度
select lengthb('delin Li') s from dual;--8 查看字符串长度

select ascii('as')s from dual;--97 返回第一个字母的ASCII码
select chr(97)s from dual;--a 函数返回十进制表示的字符

select concat('delin',' Li')s from dual;--delin Li 将字符串拼接
select 'Hello! '||'hello world!' from dual;-- Hello! hello world!字符串连接
select initcap('delin li')s from dual;--Delin Li 将每个单词的第一个字母大写其它字母小写返回。单词由空格,控制字符,标点符号分隔

select lower('LIDELIN')s from dual;-- lidelin 将字母变为小写
select upper('lidelin')s from dual;--LIDELIN 将字母变为大写
select initcap('efg')s from dual; --Efg 将首字母大写

select lpad('lidelin',9,'A')s from dual;--AAlidelin 小于9个字符时左边补A
select rpad('lidelin',9,'A')s from dual;--lidelinAA 小于9个字符时右边补A

select ltrim('000lidelin','0')s from dual;--lidelin 将左边0取消
select rtrim('lidelin000','0')s from dual;--lidelin 将右边0取消
select trim(' delin Li ')s from dual; --delin Li 将字符串两边空格去掉
select trim(leading 9 from 9998767999) s1,trim(trailing 9 from 9998767999) s2,trim(9 from 9998767999) s3 from dual; -- 8767999 9998767 8767

select replace('lidelin','l','L')s from dual;--LideLin 将字符串中l替换为L

select soundex('lidelin')s from dual;--L345 返回字符串参数的语音表示形式

select translate('lidelin','dn','s')s from dual;--liseli 字符串中字符存在于为'dn'中时,替换为对应值,d变为s,n变为空

select round(123.456,1)s from dual;--123.5 小数位保留一位四舍五入
select trunc(123.456,1)s from dual;--123.4 小数保留一位不不进行四舍五入
select mod(9,5)s from dual; --求余
select trunc(65/33)s from dual;-- 1 取整 
select ceil(65/60)s from dual;-- 2 取整

select sign(-2.1)s from dual;-- -1 判断数字是否为正数 -1否
select sign(2.1)s from dual;-- 1 判断数字是否为正数 1是

select user from dual;--MTRSCDE 查询当前数据库登陆账户名
select vsize('lidelin')s from dual;--7 返回表达式所需的字节数
select nullif('lidelin','lidelin')s from dual;-- 空 值相等返空,否则返回第一个值
select coalesce('','111','e','lidelin')s from dual;-- 111 返回列表中第一个非空表达式

--日期和字符转换函数用法(to_date,to_char)
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; -- 2017-12-04 15:02:25 日期转化为字符串 
select to_char(sysdate,'yyyy') as nowYear from dual; -- 2017 获取时间的年 
select to_char(sysdate,'mm') as nowMonth from dual; -- 12 获取时间的月 
select to_char(sysdate,'dd') as nowDay from dual; -- 04 获取时间的日 
select to_char(sysdate,'hh24') as nowHour from dual; -- 15 获取时间的时 
select to_char(sysdate,'mi') as nowMinute from dual; -- 02获取时间的分 
select to_char(sysdate,'ss') as nowSecond from dual; -- 25获取时间的秒

select to_date('2017-12-04 15:02:25','yyyy-mm-dd hh24:mi:ss') as nowTime from dual; -- 2017/12/4 15:02:25 字符串转化为日期 
select to_char(sysdate,'yyyy-mm-dd q ww w hh24:mi:ss') as nowTime from dual; -- 2017-12-04 4 49 1 15:07:33 2017年 第四季度,当年第49个周,当月第1个周 15点07分33秒

select to_char(to_date('2017-12-04','yyyy-mm-dd'),'day')s from dual; --星期一 
select to_char(to_date('2017-12-04','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American')s from dual; --monday

select floor(sysdate - to_date('2017-12-01','yyyy-mm-dd')) days from dual;-- 3 两个日期间的天数
select months_between(to_date('2017-10-01','yyyy-mm-dd'),to_date('2017-12-01','yyyy-mm-dd')) months FROM DUAL; -- -2 两个日期间的月数

由于时间紧促,在这里就总结一下部分常用oracle函数,当然大家觉得那些有必要添加进去的函数,希望朋友们能提出来!如有错误,还望斧正!

原文地址:https://www.cnblogs.com/lidelin/p/7977459.html