我正在尝试创建一个 MySQL 查询,该查询返回 (col_a+col_b-col_c+col_d) != col_e
的行,其中所有列都是 decimal
并默认为 null
。我知道有一行满足这些要求,但是当我使用上述逻辑作为 WHERE
子句运行查询时,该行没有显示出来。我注意到 col_c
是 null
,而不是一个数值,在将它更改为 0
之后,当我运行查询时,该行出现了。
为什么会这样?我一直假设 null
在上述实例中被解释为 0
?
最佳答案
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_d
(COALESCE
在这种情况下的工作方式相同)。
有关使用 NULL
的更多信息:http://dev.mysql.com/doc/refman/5.0/en/problems-with-null.html
关于mysql - 数学计算中的"null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555169/