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"
以下所有查询 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"