做統計報表的時候,有時候不希望查出來的值是null,因為在代碼中需要做大量的判空,最后轉換成0來處理。既然如此,那在sql中查出來就是0,就不用為空而去判空了。
1.IFNULL()
?ifnull()只能放2個值。
select IFNULL(null,0);
使用舉例:
如果工資為null,就設為0?
select IFNULL(salary,0) from emp
求和,如果最后值為null,設為0?
select IFNULL(sum(salary),0) from emp
2.COALESCE()
?coalesce()可以放入多個值。
select coalesce(null,null,0); --結果為 0
select coalesce(null,null,null,0); --結果為 0
select coalesce(null,null,null,1,2); --結果為 1
如果第1個值為null,就看第2個值,如果第2個值不為null,就使用第2個。以此類推。
使用舉例:查出工資比 JOHN 低的員工。如果有人的工資為null,就默認為0。
select ename,salary from emp where coalesce(salary,0) < (select salary from emp whrer ename ="JOHN");