10 SQL语言——函数
函数分类
单行函数
- 字符函数 数值函数 日期函数
- 转换函数 通用函数
(分组)多行函数
- sum() avg() 仅适用于数值型
- count() max() min() 适用于任何类型
其它函数
- nvl()
- nvl2()
- decode()
单行函数
字符函数
数值函数
日期函数
ROUND()函数详解:
四舍五入规则:
--year:1-6月为小,7-12月为大
--month:1-15日为小,16-31日为大
--day:本周日-周三(含)舍为本周日 周四周五周六入到下周日 (周日为每周的第一天)
转换函数
常用的转换函数有:to_char() to_date() to_number()
- -- to_number():将数值类型的字符转换为数值
- -- to_char()将数值或日期类型的数据转化为字符类型
- -- to_date() 将字符类型(格式为日期类型)的数据转换为日期类型
- --注意:number类型不能直接转为日期类型
--char-->number
- select to_number('123'+2) from dual;
--number-->char
- --自动转换(隐式转换):字符类型的数字与数字型数字进行运算时,会进行自动转换
- select 123+'2' from dual;
- --显示转换:to_char(字符型数字,格式)
- --格式:9,表示占位,例如999,999,999会将数字三个一组使用逗号隔开
- --格式:L表示人民币符号,$表示美元符号
- --格式:0,表示占位,但是如果数据长度不足,会使用0补足
- --格式:如果数据比给的格式长度还长,则全显示为#符号
- select to_char('21343543324','L999,999,999,999,999') from dual;
- select to_char('21343543324','L000,000,000,000,000') from dual;
- select to_char('21343543324','L000,000,000') from dual;
--char->date
- --to_date('字符日期',对应转换格式)
- select to_date('20190201','yyyymmdd') from dual;
- select to_date('2019/02/12','yyyy/mm/dd') from dual;
--date-->char
- --to_char(date,'格式')
- select to_char(hiredate,'yyyy-mm-dd'),ename from emp;
- select to_char(hiredate,'yyyy"年"mm"月"dd"日"'),ename from emp;
分组函数(多行函数)
常用的分组函数有:max,min,avg,sum,count
值得注意的两点点:
1.分组函数不能和其它字段混用,除非分组(group by)否则报错,如:
- select min(sal),ename from emp;--错误
- select min(sal),job from emp group by job;--正确
2.count函数只值不为空的记录。
其它函数
- NVL(字段,默认值): 当字段不为0时,返回字段的值,否则返回默认值
- NVL2(字段,值1,值2) :当字段为0时,返回值2,否则返回值1
- DECODE(值1,处理1,值2,处理2...)
--nvl(字段,值) select sal+nvl(comm,0),sal,comm from emp; --nvl2(字段,值1,值2) select sal,comm,nvl2(comm,sal+comm,sal)from emp; --decode(字段,值1,处理1,值2,处理2...默认处理) select ename,decode(job,'SALESMAN','销售人员','MANAGER','经理','其它') from emp;