Oracle中单行函数、多行函数
一、单行函数:一次操作一行
单行函数包括:字符函数 数值函数 日期函数 转换函数 通用函数
1.字符函数:a. lower(全部字符转成小写)、 upper(全部字符转成大写)、initcap(单词首字母大写)
例如:select 'HEllo wORld' one, lower('HEllo wORld') two, upper('HEllo wORld') three, initcap('HEllo wORld') from dual;
b. substr(字符串,begin,len) :从begin开始数(第一个字符索引为1),向后截取len个字符数
例如:select substr('HELLO WORLD',2,5) from dual;
c. length 字符数 / lengthb 字节数
一个英文或一个汉字算一个字符数;在utf-8编码格式下,一个汉字算3个字节
扩展:如何查看当前系统编码格式:select * from nls_database_parameters;
d. instr(str,substr) : str为字符串,substr为字符串中的某个或多个连续字符,功能是查询str字符串中,substr指定字符串的位置
例如: select instr('Hello world','ll') from dual;
e. lpad / rpad :左填充 / 右填充
例如 : select lpad('hello',10,'*'), rpad('world',10,'$') from dual;
f. trim:去空格,或者去除任意字符
例如:select trim(' hello world ') from dual; (去除空格)
select trim('x' from 'xxxxxhello worldxxxxx') from dual; (去除x字符)
g. replace:字符串替换
例如:select replace('hello', 'l', '*') from dual;
2.数学函数
a. round(数字,位数) :对数字进行四舍五入计算
例如:select round(66.666,2), round(66.666,1), round(66.666,0), round(66.666,-1), round(66.666,-2) from dual;
b. trunc(数字,位数):舍尾,保留n位小数
例如:select trunc(66.666,2), trunc(66.666,1), trunc(66.666,0), trunc(66.666,-1), trunc(66.666,-2) from dual;
c. mod(数字,位数):取余(相当于%)
3.日期函数
a. sysdate:系统当前时间
b. to_char(日期,格式)
c. months_between(日期1,日期2):日期1-日期2得出相差多少月 例如:select ename, hiredate,(sysdate - hiredate)
d. add_months:加月份 例如:select add_months(sysdate,12) from dual; --当前时间加上12个月
e. last_day:获取当月里面的最后一天 例如:select last_day(sysdate) from dual;
f. next_day(日期,'星期五'):获取当前时间的下一个星期n是哪一天 例如:select next_day(sysdate,'星期五') from dual;
4.通用函数
a. nvl / nvl2
b. nullif(a,b) : 若a = b, 则返回null,否则返回a;
c. coalesce : 从左往右找第一个不为null的
例如:select comm, sal,coalesce(comm,sal) from emp;
d. 条件判断函数
decode(字段, 条件1,返回值1,条件2,返回2,....,最后表达式)
例如:select ename,job , sal 涨前, decode(job, 'PRESIDENT',sal+1000,'MANAGER',sal+500,sal+300) 涨后 from emp;
case表达式
例如:select ename ,job ,sal 涨前,case job
when 'PRESIDENT' then sal+1000
when 'MANAGER' then sal+500
else sal + 300 end
涨后
from emp ;
5.转换函数
a. 隐式转换(自动转换)
b. 显式转换
二、多行函数:一次操作多行
1.count:可以查询出非空行数
例如:求emp表有多少行数据:select count(*) from emp;
2.sum:求出指定列的数值和
例如:求emp表中所有员工工资的总和:select sum(comm) from emp;
3.max:求出指定列中的最大值
例如:求emp表中员工最大工资是多少:select max(comm) from emp;
4.min:求出指定列中的最小值
例如:求emp表中员工最小工资是多少:select min(comm) from emp;
5.avl:求出指定列中的平均值
例如:求emp表中员工平均工资是多少:select avl(comm) from emp;