この簡単なクエリがあります
SELECT *
FROM `book`
WHERE `BookID` = '7u'
LIMIT 1
空の結果が必要ですが、ブック ID = 7 の結果が 1 つ表示されます。BookID は自動インクリメントです。クエリが「u」文字を無視するのはなぜですか?
は数値ではないため7u
、明らかに mysql はu
.
数の型を修飾するために接尾辞を使用する高級プログラミング言語を考えているのではないでしょうか? C 派生言語では、7u は値 7 の符号なし整数になります。
次の 2 つの理由からです。
レコードは 1 つしかない場合があります。
LIMIT 1 を使用していました。これは、出力から 1 つのレコードのみを表示します。したがって、LIMIT 5 OR 2 を使用します。
mysql は文字列を 7u として受け取るので、このようなことをしようとすると文字列に変換されますが、mysql は厳密モードではないため、文字列を整数に変換します。これは、ID が整数であり、7u の丸めが 7 になるためです。 '7u' の代わりに 7u を引用せずに 1 つのレコードを試行すると、エラーが発生します