如何避免在 ms-sql select 语句中被 0 除



我已经读过nullif,但无法将SELECT语句放在一起以正确使用它:

Select (num/total) as percent ...

如果总数为 0,我想返回 Null。如何修改声明?

如果我说

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

除以空是什么意思?

您可以使用

CASE

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

回答问题的第二部分:

除以空是什么意思?

使用NULL值的算术计算的结果是NULL,或者换句话说:

因为 Null 不是数据值,而是未知值的标记, 在 Null 上使用数学运算符会导致未知值, 由 Null 表示。

所以声明

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

如果total = 0,将返回NULL.正如蒂姆所提出的那样,CASE的使用同样有效处理问题的方式。

最新更新