在实际项目中,我们可能会遇到求百分比,比值等带除法的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;