数学计算中的“空”?

Nat*_*ate 3 mysql null

我正在尝试创建一个 MySQL 查询,该查询返回行 where (col_a+col_b-col_c+col_d) != col_e,其中所有列都为decimal,默认为null。据我所知,有一行满足这些要求,但是当我使用上述逻辑作为子句运行查询时WHERE,该行没有显示。我注意到那col_cnull,而不是一个数值,并将其更改为0运行查询时显示的行后。

为什么会发生这种情况?我一直认为这null被解释为0在上述情况下?

Exp*_*lls 5

NULL(就我的解释而言)是无法代表的数据。对 null 唯一合适的测试是IS NULL、和几个IS NOT NULL专门用于处理NULL值的函数:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

你可以说- IFNULL(col_c, 0)+col_dCOALESCE在这种情况下工作方式相同)。

有关使用NULLs 的更多信息:http ://dev.mysql.com/doc/refman/5.0/en/problems-with-null.html