私はタイプミスを持つクエリを持っている:where節のMySQLバグ?
SELECT
SUM(qty)
AS
'aqty1'
FROM
po_details
WHERE
product_id ='1196'
AND
so_number = '1m';
は、それは次のようになります。
SELECT
SUM(qty)
AS
'aqty1'
FROM
po_details
WHERE
product_id ='1196'
AND
so_number = '1';
しかしso_number = '1m'
が神秘的に正しく出力していまず間違ったクエリ、二正しいクエリと同じ出力を行いますこれは当てはまらないはずですよね?
product_id
とso_number
のデータ型はともにINT
です。私が1m
を引用符で囲んでいて、条件セットがso_number LIKE '%1m%'
だったので、so_number
のデータタイプがVARCHAR
の場合、so_number = '1m'
は機能するはずです。
なぜ上記の誤植は機能しますか? MySQLエラーではなく、1m
を見つけられず、1
と考えていますか?これは既知のバグですか?私はMySQL 5.6.14を使用しています。
:あなたはhere約読むことができます。最高のことは '1'です。 –
ああ、私はそれらを引用符で囲んでも、文字 'm'を読みませんか? – xjshiya
引用符は文字列の記号であり、オンライン検索のようにグループ化するものではありません。 MySQLが文字列 ''1m'を整数に変換する場合、それを比較するためには整数ではなく、数値でない' 'm ''が見つかると停止し、整数 '1'しか見つけません。 –