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

为什么mysql在返回null时返回一些行?,mysql,where,Mysql,Where,下面是myTable的结构 ---------------- |id|info1|info2| ---------------- |0 |abcde|fghij| |1 |qwert|yuopa| ---------------- 以下是我称之为的查询: SELECT * FROM `myTable` WHERE `id` = 'a' 它返回第一行,即 |0 |abcde|fghij| 发生了什么事?正常情况下,id是一个整数,但我错误地将其作为字符串键入,但仍然得到了一个结果。MySQL

下面是myTable的结构

----------------
|id|info1|info2|
----------------
|0 |abcde|fghij|
|1 |qwert|yuopa|
----------------
以下是我称之为的查询:

SELECT * FROM `myTable` WHERE `id` = 'a'
它返回第一行,即

|0 |abcde|fghij|

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

MySQL尝试将
'a'
转换为整数。字符串不包含任何数值,因此强制转换的结果为
0
。MySQL就是这样做的

SELECT 0 = 'a';
上述查询返回
1
(TRUE)


上面的查询返回
0

MySQL试图将
'a'
转换为整数。字符串不包含任何数值,因此强制转换的结果为
0
。MySQL就是这样做的

SELECT 0 = 'a';
上述查询返回
1
(TRUE)


上面的查询返回
0

,您能告诉我们myTable的结构吗?我发现这很难复制…你能告诉我们myTable的结构吗?我发现这很难复制…@bluebrain嗯,就是这样。但更重要的是,不应该将表中的ID与字符串进行比较。这显然是查询中的一个逻辑错误。@bluebrain好吧,就是这样。但更重要的是,不应该将表中的ID与字符串进行比较。这显然是查询中的逻辑错误。