1

所以我正在尝试运行一个在WHERE语句中进行一些数学运算的查询。我写的似乎是正确的,但它似乎不起作用。

SELECT *
FROM table
WHERE col_a + col_b != col_d

基本上我想查看col_a添加到的所有记录col_b不加起来col_d

4

1 回答 1

2

我可以想到这似乎不起作用的三个原因。

第一个是最有可能的:一个或多个值是 NULL。要解决此问题,请使用 COALESCE:

where coalesce(col_a, 0) + coalesce(col_b, 0) <> coalesce(col_d, 0)

另一个原因是结果在您看来是相同的,但在浮点表示中,它们确实不同。因此,0.999999999 + 5.0 可能看起来像“6.0”,但它不等于“6.0”,因为差异在一个遥远的小数点。

第三个原因是算术溢出或打字问题(将小整数与浮点数等混合)。

于 2012-09-21T18:49:29.883 回答