天天看點

isnull與ifnull适用資料庫

根據業務流程去查詢某個資料表的某個字段的最大值

直接用的select max(code) from base_area;

大多數情況沒有問題,有個特殊點:如果資料表裡邊沒有資料,且傳回類型時int時,就會報類型轉換錯誤,因為null沒法轉成int,是以就用到了isnull函數進行轉換。

修改後:

1.sqlserver :select isnull(max(code),0) from base_area;

意思是,當沒查到資料傳回null時,傳回0,這樣就不報錯了。

但這是在sqlserver資料庫中用的函數。

在寫同樣邏輯,在mysql中時報錯了,不存在isnull函數,百度一波,要使用ifnull函數來使用,換完之後就可以了,和之前的效果相同。

2.mysql:select ifnull(max(code),0) from base_area;

如果是oracle資料庫,就不同了,可以使用以下函數實作相同效果

NVL(Expr1,Expr2)如果Expr1為NULL,傳回Expr2的值,否則傳回Expr1的值

3.oracle: select nvl(max(code),0) from base_area;