所以我试图运行一个在WHERE
语句中进行数学运算的查询。看来我写的是正确的,但似乎没有用。
SELECT *
FROM table
WHERE col_a + col_b != col_d
基本上我想看到col_a
添加到col_b
的所有记录都不会加起来col_d
。
答案 0 :(得分:2)
我可以想到为什么这似乎不起作用的三个原因。
第一种是最有可能的:一个或多个值为NULL。要解决此问题,请使用COALESCE:
where coalesce(col_a, 0) + coalesce(col_b, 0) <> coalesce(col_d, 0)
另一个原因是结果看起来像它们是相同的,但在浮点表示中,它们确实是不同的。因此,0.999999999 + 5.0可能看起来像“6.0”,但它不等于“6.0”,因为差异是在一个较远的小数点。
第三个原因是算术溢出或打字问题(将微小整数与浮点数混合等)。