WHERE
そのため、ステートメントでいくつかの計算を行うクエリを実行しようとしています。私が書いたことは正しいようですが、うまくいかないようです。
SELECT *
FROM table
WHERE col_a + col_b != col_d
col_a
基本的に、追加されたが合計されcol_b
ないすべてのレコードを表示したいcol_d
。
これが機能しないように見える理由は 3 つ考えられます。
最初の可能性が最も高いのは、1 つ以上の値が NULL であるということです。これを修正するには、COALESCE を使用します。
where coalesce(col_a, 0) + coalesce(col_b, 0) <> coalesce(col_d, 0)
もう 1 つの理由は、結果が同じように見えても、浮動小数点表示では実際には異なることです。したがって、0.999999999 + 5.0 は "6.0" のように見えるかもしれませんが、"6.0" とは異なります。違いは小数点以下にあるからです。
3 番目の理由は、算術オーバーフローまたは入力の問題 (小さな整数と浮動小数の混合など) です。