下面我們來看看例子並說明:
1、正常的例子
SQL> SELECT NVL(NULL, 'a') FROM dual;
N
-
a
2、當expr1是數字,而expr2是字符的時候,並且expr1的類型是不能隱式轉化爲expr2SQL> SELECT NVL(1, 'a') FROM dual;
SELECT NVL(1, 'a') FROM dual
*
ERROR at line 1:
ORA-01722: invalid number
由上面可以看出在expr1和expr2的類型不一樣是不行的3、當expr1是數字,而expr2是字符的時候,並且expr1的類型能隱式轉化成expr2
SQL> SELECT NVL(1, '2') FROM dual;
NVL(1,'2')
----------
1
由上面可以看出雖然expr1和expr2的類型不一樣,但是卻能執行成功。說明expr1的類型能隱式轉化成expr2就能執行。4、當expr1是字符,而expr2是數字的時候
SQL> SELECT NVL('a', 2) FROM dual;
N
-
a
由上面能看出雖然expr1和expr2的類型不一樣,也不能發生隱式轉化卻能成功,可以看出他們隱式轉化的順序是,expr2要能隱式轉化成expr1。總結:由上面可以總結出
1)、NULL可以是任何類型
2)、NVL(expr1, expr2)函數中expr1和expr2的類型要一樣
3)、NVL(expr1, expr2)函數中當expr1和expr2的類型不一樣時expr2的類型要能隱式轉換成expr1的類型