1、NVL(a, b) NVL函数是将NULL值的字段转换成默认字段输出。语法:NVL(expr1,expr2)。其中,expr1是需要转换或判断的字段名或者表达式,expr2则是NULL的替代值。例如:SELECT NVL(commission_pct,0) from emp2; #代表从emp2中查找字段commission_pct,空值转换成默认值0
2、NVL2(a,b,c)通用函数,如果a不为NULL,取b值,否则取c值,相当于三元运算SELECT NVL2(commission_pct,commission_pct,0) from EMP2 #从EMP2中查找commission_pct,如果不为空就用自身值,如果为空使用0代替
3、使用NULLIF(a,b)通用函数,在类型一致的情况下,如果a与b相同,返回NULL,否则返回a,比较10和10.0是否相同:-- 结果NULL
select NULLIF(10, 10) from dual;
-- 结果11
select NULLIF(11, 10) from dual;
-- 类型不一致,错误
select NULLIF(10, '10') from dual;
4、使用CASE...WHEN条件语句-- 将职位是'IT_PROG'的,工资+1000;职位是'FI_ACCOUNT'的,工资+800;职位是其它的,工资+400:
select last_name "name",job_id "job",salary,
case job_id
when 'IT_PROG' then salary+1000
when 'FI_ACCOUNT' then salary+800
else salary+400
end "salaryNew"
from emp2;
5、oracle专用语法中的decode()函数-- 将职位是'IT_PROG'的,工资+1000;职位是'FI_ACCOUNT'的,工资+800;职位是其它的,工资+400:
select last_name "name",job_id "job",salary,
decode(job_id,'IT_PROG',salary+1000,'FI_ACCOUNT',salary+800,salary+400) "salaryNew"
from emp2;
6、单引号和双引号的使用-- 单引号使用:
1)字符串,例如:'hello'
2)日期型,例如:'17-12月-80'
3)to_char/to_date(日期,'YYYY-MM-DD HH24:MI:SS')
-- 双引号使用:
1)列别名,例如:select last_name "姓 名" from emp2
2)to_char/to_date(日期,'YYYY"年"MM"月"DD"日" HH24:MI:SS')‘’号中的英文字符大小写不敏感
7、统计聚合函数,关键字是distinct,和MySQL中的去除重复的关键字一样-- 部门数据:重复
select count(department_id) from emp2;-- 部门数据:不重复
select count(distinct department_id) from emp2;
8、平均值,加和值SELECT SUM(SALARY),AVG(SALARY) FROM EMP2
9、四舍五入select sum(salary) "total", round(avg(salary), 0) "avg" from emp2;
10、最小最大select min(hire_date) "first one", max(hire_date) "last one" from emp2;
11、截取数字小数位数select department_id "did", trunc(avg(salary),2) "AvgSalary"
from emp2
group by department_id;
语法:trunc(num,[int]); 它的使用是去掉数字num小数位以后的部分,并且不进行四舍五入,int是保留的长度。.