Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
所以我正在尝试运行一个在WHERE语句中进行一些数学运算的查询。我写的似乎是正确的,但它似乎不起作用。
WHERE
SELECT * FROM table WHERE col_a + col_b != col_d
基本上我想查看col_a添加到的所有记录col_b不加起来col_d。
col_a
col_b
col_d
我可以想到这似乎不起作用的三个原因。
第一个是最有可能的:一个或多个值是 NULL。要解决此问题,请使用 COALESCE:
where coalesce(col_a, 0) + coalesce(col_b, 0) <> coalesce(col_d, 0)
另一个原因是结果在您看来是相同的,但在浮点表示中,它们确实不同。因此,0.999999999 + 5.0 可能看起来像“6.0”,但它不等于“6.0”,因为差异在一个遥远的小数点。
第三个原因是算术溢出或打字问题(将小整数与浮点数等混合)。