2012-05-18 89 views
2

我讀過有關nullif,但一直沒能放在一起SELECT說法正確地使用它:如何避免在ms-sql select語句中除以0?

Select (num/total) as percent ... 

如果總爲0,我想返回null。我該如何修改陳述?

如果我說

select (num/nullif(total, 0)) as percent ... 

是什麼意思由空分?

+0

[此答案](http://stackoverflow.com/a/858492/238688)相關的問題可能會有用。 –

回答

4

你可以使用CASE

SELECT [percent] = CASE WHEN total = 0 THEN NULL ELSE (num/total) END 
FROM Table 
0

要回答你的問題的第二部分:

是什麼意思由空分?

的算術計算的,它使用一個NULL值爲NULL,或者put it another way其結果是:

由於空不是數據值,但是對於一個未知的值的標記,使用數學運算符 on Null結果爲未知值, ,其由Null表示。

所以聲明

select (num/nullif(total, 0)) as percent 

會如果total = 0返回NULL。 Tim提出的使用CASE是一種同樣有效的處理問題的方法。