0
以下所有查询均返回ID为1
的行,为什么?MySQL:为什么在这个查询中“1 + 1”被当作“1”?
SELECT * FROM `my_table` WHERE `ID` = "1" SELECT * FROM `my_table` WHERE `ID` = "1+1" SELECT * FROM `my_table` WHERE `ID` = "1 WTF"
以下所有查询均返回ID为1
的行,为什么?MySQL:为什么在这个查询中“1 + 1”被当作“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"