我在数据库里面查询东西的时候,很多时候我们新增了字段后,那些老数据就为null,在查询的时候操作不是很方便。
于是发现了nvl和nvl2函数可以让我真确的操作以前的数据。
1.nvl
语法:nvl(expr1,expr2);
expr1:表达式,字段名,或者查询出来的一列的列名
expr2:如果expr1的值为null,则返回expr2的值。如果expr1不为空,那么就返回expr1的值
如案例:
sql--------------------------------------------结果
select nvl(null,1) from dual;---------------1
select nvl(2,1) from dual;---------------2
select nvl(sum(null),1) from dual;-------1
select nvl(sum(2),1) from dual;-------2
2.nvl2
语法:nvl2(expr1,expr2,expr3)
expr1:表达式,字段名,或者查询出来的一列的列名
expr2:如果表达式不为空,则返回expr2的值
expr3:如果表达式为空,则返回expr3的值
如案例:
sql-----------------------------------------结果
select nvl2(null,2,1) from dual;---------------1
select nvl2(4,2,1) from dual;---------------2
select nvl2(sum(null),2,1) from dual;-------1
select nvl2(sum(4),2,1) from dual;-------2