20、单行函数:每次执行函数,传入一行列值,返回一个结果;多行函数:每次执行函数,传入多行列值,返回一个结果
21、字符型函数:
(1)大小写转换:lower(小写)、upper(大写)、initcap(首字母大写)
(2)拼接字符串:concat,例 select concat(‘hello’,‘world’) from dual;
(3)截取字符串:substr,截取字符串,数据库的字符串下标从1开始,例:
select substr('abcdefg',3) from dual;--cdefg
select substr('abcdefg',3,2) from dual;--cd
select substr('abcdefg',-3) from dual;--efg
select substr('abcdefg',-3,2) from dual;--ef
(4)字符串长度:length,例:
select length('abcd') from dual;--4
select length('') from dual;--null
(5)查找字符串下标,找不到返回0:instr,例:
select instr('abcdefg','cd') from dual;--3
select instr('abcdefg','xxx') from dual;--0
select instr('abcdefgabcdefg','cd',4) from dual;--10,跳过前3个,从下标4开始查找
select instr('abcdefgabcdefg','cd',-1) from dual;--负数表示反方向查找
select instr('abcdefgabcdefg','cd',1,1) from dual;--查找第n次出现的位置
(6)左填充:lpad;右填充:rpad。如果位数不足会填充,但是空值会返回null,例:
select lpad('abcd',7,'#') from dual;--###abcd
select rpad('abcd',7,'*') from dual;--abcd***
select lpad('',7,'#') from dual;--null
(7)修剪两边指定字符:trim,只能修剪两边,而不能修剪中间的值,例:
select trim('a' from 'aaabcdaaefgaa') from dual;--bcdaaefg
select trim('b' from 'aaabcdaaefgaa') from dual;--aaabcdaaefgaa
(8)替换字符串:raplace,例:
select replace('abcdefgabcd','cd','#') from dual;--ab#efgab#
22、数字型函数:
(1)取模运算:mod,例:
select mod(5,3) from dual;--2
(2)截断:trunc,例:
select trunc(3.1415927) from dual;--3
select trunc(3.1415927,3) from dual;--3.141
(3)四舍五入:round,例:
select round(3.1415927,3) from dual;--3.142
(4)进位取整:ceil,例:
elect ceil(3.0001) from dual;--4
23、日期型函数:
(1)当前系统时间:sysdate,例:
select sysdate from dual;--2018/10/13 18:25:06
(2)oracle中日期类型没有常量这一说,默认日期字符串格式dd-mon-rr,例:‘01-1月-18’
(3)两个日期类型可以做加减法,返回两个日期间隔天数
(4)求两个日期间隔的月:months——between(第一个日期,第二个日期)
(5)日期加减若干月,返回一个新的date类型数据:add_months(日期,加减的月[加是正数, 减是负数])
(6)返回指定日期下一个最近的星期几的日期,1~7代表日到六:next_day(日期,星期几/数字)
(7)返回指定日期的最后一天:last_day(日期)
(8)四舍五入日期:round(日期)
(9)日期的截断:trunc(日期)
(10)数字和日期不能做任何的类型转换
(11)把一个日期按照指定格式转换为字符串:to_char(日期,格式),例:
select '现在的时间是:'|| to_char(sysdate,'yyyy-mm-dd') from dual;
select '现在的时间是:'|| to_char(sysdate,'mm/dd/yyyy') from dual;
select '现在的时间是:'|| to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select '现在的时间是:'|| to_char(sysdate,'yyyy-mm-dd day') from dual;
select '现在的时间是:'|| to_char(sysdate,'yyyy-mm-dd d') from dual;--1~7代表日~六
(12)按照指定格式把字符串解析为日期类型:to_date(字符串,格式),例:
select to_date('2019-1-1','yyyy-mm-dd')-sysdate from dual;--79.221712962963
(13)字符串转换为数字:to_number,例:
select to_number('$8000','$9999') from dual;--8000
24、通用函数:可以操作任何类型,主要针对于空值
(1)nvl(参数1,参数2):参数1如果为空,则返回参数2,返回参数1,例:
select nvl(1,2) from dual;--1
select nvl(null,2) from dual;--2
(2)nvl2(参数1,参数2,参数3):参数1如果不为空,返回参数2,否则返回参数3,例:
select nvl2(1,2,3) from dual;--2
select nvl2(null,2,3) from dual;--3
(3)nullif(参数1,参数2):两个参数相等,返回null,否则返回参数1,例:
select nullif(1,2) from dual;--1
select nullif(1,1) from dual;--2
(4)coalesce(参数1,参数2,……):返回第一个非空参数值,例:
select coalesce(1,2,3,4) from dual;--1
select coalesce(null,null,3,4) from dual;--3