SQL减去2列 - 具有空值

时间:2013-04-08 10:26:00

标签: sql

我有这个表(由SQL查询构成):

Row 1 Row 2 
2     1    
3     NULL 

我想减去2列,所以我选择这样:

Select Row1 - Row2
From table

但后来我得到了这个结果:

1
NULL

而不是:

1
3

如何才能获得最后的结果?

4 个答案:

答案 0 :(得分:17)

请尝试:

SELECT ISNULL([Row 1], 0) - ISNULL([Row 2], 0) from YourTable

有关详细信息,请访问 ISNULL

答案 1 :(得分:5)

你得到这个的原因是因为任何带NULL的数学运算都会产生NULL 因此在执行操作时,所有值都应该读作 NULL = 0

ISNULL()

因此

SELECT ISNULL([Row 1], 0) - ISNULL([Row 2], 0) from YourTable

答案 2 :(得分:0)

MySQL的ISNULL等同于IFNULL

  

如果expr1不为NULL,则IFNULL()返回expr1;否则返回   expr2。

也许还会看看SQL NULL Functions

The ISNULL from MySQL is used to check if a value is null

  

如果expr为NULL,则ISNULL()返回1,否则返回0。

答案 3 :(得分:0)

在sql中任何减去NULL的值都为零,因此它始终为NULL,因此您需要将NULL转换为零

SELECT ISNULL(ROW1,0)-ISNULL(ROW2,0) FROM YOUR_TABLE