1

WHEREそのため、ステートメントでいくつかの計算を行うクエリを実行しようとしています。私が書いたことは正しいようですが、うまくいかないようです。

SELECT *
FROM table
WHERE col_a + col_b != col_d

col_a基本的に、追加されたが合計されcol_bないすべてのレコードを表示したいcol_d

4

1 に答える 1

2

これが機能しないように見える理由は 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 番目の理由は、算術オーバーフローまたは入力の問題 (小さな整数と浮動小数の混合など) です。

于 2012-09-21T18:49:29.883 に答える