Oracle nvl()函数和nvl2()函数的区别和作用,将null赋值为0
最近项目中经常见到这个函数,就记录一下。学习了下还是非常不错的一个函数的。
1.nvl(col1,para1)排空函数
我们在数据库sql操作中会遇到有些情况需要使用分组函数或者有需求(数据为空的时候赋值为0)就需要用到这个函数
当col1为空,null的时候,就返回para1的值。
比如:往数据库里面赋值:当插入一条数据或者计算一条数据的时候,其中有一个字段为null,但是我们需要显示为0或者进行计算的时候就需要用到这个:
select avg(salary) from emp;
--当这个字段中有null的时候,就只会计算不为空的字段数量
--14条数据,三条为空为null,使用avg最后结果只会除以11,而不是除以14
select avg(nvl(salary,0)) from emp;
--这个就会除以14得出结果
2.nvl2(col,para1,para2) 类似Java的三元表达式
和Java的三元表达式类似。col的值不为null的时候返回para1,否则返回para2。
注:
w3cJava三元表达式:https://www.w3cschool.cn/java/java-ternary-operator.html
分组函数:
分组函数会自动忽略空值,进行计算
-
avg()//取平均值
-
sum()//求和
-
max()//求最大值
-
min()//求最小值
-
count()//统计行数
select count(*) from dual;
--统计出所有的数据量。即数据库表存储的所有数据的长度。假如有20条数据,这里会显示20
select count(salary) from dual;
--统计salary字段所有不为空的长度。为空自动忽略.假如有20条数据,但是又三条数据salary为nnull,这里会显示17.
-
wm_count()//行转列:eg:一个部门中所有员工都显示在一行上面,','隔开。
这几天学sql快学疯了,不过好的一点就是,实践过的知识现在总会有新的体会,整体的学一遍之后,对整体知识理解又上升了一个阶段。以前很难理解的知识,现在来看很清楚明白。