1

ここに構造がありますmyTable

----------------
|id|info1|info2|
----------------
|0 |abcde|fghij|
|1 |qwert|yuopa|
----------------

ここに私が呼び出すクエリがあります:

SELECT * FROM `myTable` WHERE `id` = 'a'

そして、それは最初の行を返します

|0 |abcde|fghij|

何が起こっている?通常idは整数ですが、誤って文字列として入力しましたが、それでも結果が得られました。

4

1 に答える 1

1

MySQLは'a'整数としてキャストしようとします。文字列には数値が含まれていないため、キャストの結果はです0。これがMySQLのキャスト方法です。

SELECT 0 = 'a';

上記のクエリは1(TRUE)を返します。

SELECT CAST('a' AS SIGNED INTEGER);

上記のクエリはを返します0

于 2012-04-26T15:47:19.127 に答える