MySQLで、数字をスラッシュで区切った文字列なのですが、


SELECT '123/456' = 123

これの結果が 「1」になるのは何故でしょうか。
SELECT '123/456' = '123'
ですと「0」が返るところをみると、'123/456'が何かの数字とみなされている気がするのですが、一体何とみなされているのでしょうか。

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2017/05/02 15:31:10

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

マニュアルでいうとこちら。
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)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません