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

2021-10-03 12:37:20 字數 794 閱讀 9483

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

sql解決避免除以零的錯誤

在實際專案中,我們可能會遇到求百分比,比值等帶除法的sql語句。這時,我們也許會遇到分母為零的情況。下面給出我總結的一些方法 1.用nullif函式 首先說一下nullif函式的語法 nullif expr1,expr2 意思是說 如果expr1 expr2的話,則傳回expr1 如果expr1 e...

找零錢的兩種方法

有時候,去便利店買幾塊錢的東西,但沒有零錢,只能給他們一張100的,他們可能找給我一沓10塊的和幾枚硬幣。我不喜歡這麼多的零錢,要知道,錢越零散,散失地就越快,我希望找給我的零錢張數最少。如何找出最少數目 錢的張數 的零錢呢?這個問題看起來很簡單,假設要用50 20 10 5 1 元 找出87元來,...

PHP數字補零的兩種方法

在php中有兩個函式 至少有兩個是否有其他的我還不知道,能夠實現數字補零,str pad sprintf 詳細如下 str pad 顧名思義這個函式是針對字串來說的這個可以對指定的字串填補任何其它的字串 例如 str pad 帶填補的字串,填補後的長度,填補字串,填補位置 其中填補後的長度必須是個正...