为什么mysql在返回null时返回一些行?

时间:2012-04-26 15:45:32

标签: mysql where

这是myTable

的结构
----------------
|id|info1|info2|
----------------
|0 |abcde|fghij|
|1 |qwert|yuopa|
----------------

这是我打电话的查询:

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

并返回第一行

|0 |abcde|fghij|

发生了什么事?通常id是一个整数,但我错误地将其键入字符串,但我仍然得到了结果。

1 个答案:

答案 0 :(得分:1)

MySQL尝试将'a'转换为整数。该字符串不包含任何数值,因此转换的结果为0。这就是MySQL的投射方式。

SELECT 0 = 'a';

上述查询返回1(TRUE)。

SELECT CAST('a' AS SIGNED INTEGER);

上述查询返回0