在實際項目中,我們可能會遇到求百分比,比值等帶除法的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;