MySQL: 为什么“1+1”在此查询中被视为“1”?

MySQL: why is "1+1" treated as "1" in this query?

以下所有查询 return ID == 1 的行,这是为什么?

SELECT * FROM `my_table` WHERE `ID` = "1" SELECT * FROM `my_table` WHERE `ID` = "1+1" SELECT * FROM `my_table` WHERE `ID` = "1 WTF"

当MySql进行比较时,当两个比较值的数据类型不相同时,会进行数据类型转换。在这种情况下 ID 是数字,您将它与字符串进行比较。所以 MySql 会将字符串转换为数字。它通过读取字符串开头的数字来做到这一点,一旦它不再将其理解为数字就停止。

在所有三个示例中,您提供的数字都是 1。

您可以在 MySql 文档中阅读相关内容:"Type Conversion in Expression Evaluation"