SQL 92が古い標準であることは知っていますが、新しいSQL標準バージョンではこれが変更されていないことは間違いありません。
SQL92は
を定義します
質問は次のとおりです:0.1
および0.2
クエリ内SELECT 0.1 + 0.2
おおよそですか、それとも正確ですか?
答えは、データベースもわからないということです。
したがって、データベースはMySQLおよびMariaDBエンジン用に定義された実装を実行し、このシームはDECIMAL(1,1)
として処理されます。 データ型
Nickの回答が正しい値またはテーブル定義で期待される値を返すのはなぜですか
SQL92は
も定義しますテーブルでデータ型を定義することによってニックが行ったこと。
今日MySQLのマニュアルで何かを見つけたので、この回答を編集しました。
クエリ
SELECT (0.1 + 0.2) = 0.3
結果を1
に MySQLでは、MySQLは正確な数値計算を使用し、精密数学
したがって、MySQLは0.1
、0.2
および0.3
ここでは正確なデータ型であり、この編集の前に期待していたように、正確に計算する必要があります。
クエリの意味
SELECT (0.1 + 0.2) = 0.3
のようにボンネットの下で実行されます
SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));