ご覧いただきありがとうございます。MySQLでクエリ叩いてるときにふと思い立った疑問を質問します。
環境
mysql -V
の結果
mysql Ver 14.14 Distrib 5.7.18, for osx10.12 (x86_64) using EditLine wrapper
準備
まず、適当にデータベースを作って、テーブルを次のように作ります
CREATE TABLE my_tbl ( last_name VARCHAR(40), first_name VARCHAR(40), age INTEGER ); INSERT INTO my_tbl ( last_name, first_name, age ) VALUES ( 'yamada', 'tarou', 21 );
質問内容
ここで質問の内容ですが、次のようにデータを引っ張ってきます。
select * from my_tbl where 1 = 1;
これは、レコードが1つとれます。ここで、where
の中の計算を例えば
select * from my_tbl where 1 = 0.99999999999,,,;
としたとき、where句の右辺が丸め込まれず正しく(?)評価されていると思います。
これは一体どういうことなのでしょう?予想では丸め込まれるところが出てくるのかと想像したのですが、ちょっと違ったので、挙動が知りたいです。
参考文献などもありますと幸いです。
よろしくお願いします。
追記
よくよく調べてみると、下記のリンクがほとんど答えですかね。。。
高精度計算では、可能な場合は常に、厳密値数値は与えられたとおりに使用されます。たとえば、比較での数値は、値を変更することなく正確に指定されたとおりに使用されます。
回答1件
あなたの回答
tips
プレビュー