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 回答