SQL解決除以零錯誤的兩種方法

在實際項目中,我們可能會遇到求百分比,比值等帶除法的sql語句。這時,我們也許會遇到分母爲零的情況。

下面給出解決的2種方法:

 

1. 用NULLIF函數。

首先說一下NULLIF函數的語法:

NULLIF(expr1,expr2)

意思是說:如果expr1<>expr2的話,則傳回expr1;如果expr1=expr2的話,則返回NULL。

 

2.用case when語句。

case  when 分母=0 then NULL else 分子/分母

 

這兩種方法都可行,個人認爲,如果考慮到各個數據庫的兼容性,用第二種方法更有優勢。

--  Nullif(expr1,expr2) expr1=expr2返回null;expr1<>expr2返回expr1
--  Case When 分母=0 Then null Else 分子/分母 End
--  Case 分母 When 0 Then null Else 分子/分母 End
--  MySQL
 
SET @var1=10, @var2=20, @var3=0;
  
SELECT
  @var1/NULLIF(@var2,0),
  @var1/NULLIF(@var3,0),
  CASE @var2 WHEN 0 THEN NULL ELSE @var1/@var2 END AS var1_var2,
  CASE @var3 WHEN 0 THEN NULL ELSE @var1/@var3 END AS var1_var3;

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章