今天研究了一下数据库中的过程,发现用到NVL这个函数,我记忆力不好,之前用过,长期不用又忘了。于是去查看了下官方的用法解释:

http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions119.htm#i91798

 

NVL属于字符转化输出也是字符类型的。

表达式为NVL(expr1,expr2)

 

其目的就是为了转化"空"字符为"非空"字符,当expr1为空时,输出expr2,相反则输出expr1.

 

原文中提到expr1和expr2的可以是任意数据类型,如果两者的数据类型不一致,则会进行类型转化,

其转化的原则遵循:

1、如果expr1是字符类型,则在进行比较前将expr2转化成expr1的类型,并以varchar2类型返回字符集。

2、如果expr1是数值类型,则由Oracle自身根据最高优先级判断,将数据类型转化为高优先的数据类型,

     并且最终以该类型返回数据。

 

举例:

SELECT NVL(MAX(ID), 0)  FROM WAYBILL;

这个意思表示当WAYBILL表的中最大ID为空的时候返回0。