nvl函數
語法: NVL(表達式1, 表達式2)
select nvl(s.name, '未填寫') from student s
如果表達式1的值為空, 則顯示第二個值, 否則顯示原來的值,
nvl2函數
語法: NVL2(表達式1, 表達式2, 表達式3)
select nvl(s.name, 'a', 'b') from student s
如果表達式1的值不為空, 顯示表達式2, 為空的話顯示表達式3
這兩個函數還有一個重大的區別, NVL函數中表達式1和表達式2的值必須為同一類型,
但除去另外一種情況, 當傳入的參數為字符串類型時, oracle會先嘗試轉換成數字, 如果無法轉換成數字則會報錯, 能轉換成功則會正常運行
而NVL2中沒有此限制
NULLIF(表達式1, 表達式2)
語法: NULLIF(表達式1, 表達式2)
select nullif('a', 'b') from dual
如果表達式1與表達式2相等, 則返回空, 不相等則返回表達式2, 其中表達式1和表達式2也必須為同一類型