首先我先說一下什么是Oracle的函數,曾經有一位大牛,讓我說說熟悉的oracle函數,我當時竟一頭霧水,心想“什么oracle函數啊,不就是那些SQL語句嗎“,當時我竟然說出了select之類的回答,他幾乎要生氣,反復強調:“我說了是Oracle函數”,后來他講,函數可以理解為帶有括號的(),后來我慢慢地懂事了之后,就經常百度oracle函數,每次有面試或者復習的時候,我都刻意練練SQL的函數。
使用nvl函數處理null值:
Eg:計算每個人的全年的收入包括月薪和年終津貼
(1) 年薪是(月薪)*12+績效;
(2) 但績效(comm)有null值,當comm是null值時,月薪+績效的結果也是null值;
(3) 所以,當comm為null值時,需要把它當做0來處理。哪個函數能勝此重任呢?nvl();
(4) nvl()相當於一條if..else語句,如果字段不為空,取原值;
select ename,sal*12 +nvl(comm,0) as 年薪 from emp;