NVL和NVL2两个函数虽然不经常用,但是偶尔也会用到,所以了解一下。
语法:
--如果表达式1为空则显示表达式2的值,如果表达式1不为空,则显示表达式1的值
NVL(表达式1,表达式2);
--如果字段1为空,则显示字段2的值,如果字段1不为空则显示字段1的值
NVL(字段1,字段2); --如果表达式1为空,则显示表达式2的值,如果不为空则显示表达式3的值
NVL2(表达式1,表达式2,表达式3)
--如果字段1为空则显示字段2的值,如果字段1不为空则显示字段3的值
NVL2(字段1,字段2,字段3)
比如有表:SYS_USER_INFO,表中有其中三个字段:REAL_NAME,NICK_NAME,NET_NAME。
需求;如果REAL_NAME为空,则查询NET_NAME,不为空则查询REAL_NAME:
SELECT NVL(REAL_NAME,NET_NAME) AS NAME FROM SYS_USER_INFO
在项目中有时需要在查询时预留几个备用字段,也可以通过NVL2来实现,如:
NVL2('SPARE','','') AS SPARE
这样无论如何都会有个SPARE为空的字段。