在sql中做除法處理的時候,可能需要處理除數為零的情況。
(1).case語句
處理方法是用case when ... else 來處理
(2).nullif函數
nullif函數有兩個參數,定義如下:
NULLIF( expression , expression )
其作用就是:如果兩個指定的表達式相等,就返回null值。
oracle中decode函數
含義解釋: decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
select a/b from table1 t1;
--當b為0的時候,oracle會提示除數為0,而我們一般希望除數為0時,直接輸出0即可。
--解決方法:
select decode(b,0,0,a/b) from table1 t1;
--即當b = 0時,返回0,否則才返回a/b的結果。
sql server中的nullif函數
含義解釋:nullif(expression,expression) 兩表達式相同,則返回null
--解決方法:
select isnull(a/nullif(b,0),0) from table2 t2;
--當除數b為0時,除數變為null,則a/b也為null,再通過isnull函數將null轉為0.
通過case... when...
--解決方法:
select case when b=0 then 0 else a/b end from table t3
--當除數b等於0時,直接返回0,否則再返回a/b
備注:隨筆中內容來源於網上資料整理,僅供參考。