SELECT '123/456' = 123
これの結果が 「1」になるのは何故でしょうか。
SELECT '123/456' = '123'
ですと「0」が返るところをみると、'123/456'が何かの数字とみなされている気がするのですが、一体何とみなされているのでしょうか。
よろしくお願いします。
マニュアルでいうとこちら。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.2 式評価での型変換
ルール的には、
ほかのすべてのケースでは、引数は浮動小数点 (実) 数として比較されます。
に、はまってるはずです。
マニュアルに記載されている場所が見つけられないのですが、文字列を数値に変換するときには、先頭(左端)から変換できるところまでが解釈されるようです。
文字列 '123/456' を浮動小数点に変換するとこうなります。
mysql> select cast('123/456' as double); +---------------------------+ | cast('123/456' as double) | +---------------------------+ | 123 | +---------------------------+ 1 row in set, 1 warning (0.00 sec)