MySQL:为什么在这个查询中将“1+1”视为“1”?

MySQL:为什么在这个查询中将“1+1”视为“1”?,mysql,where-clause,Mysql,Where Clause,以下所有查询都返回ID==1的行,这是为什么 从'my_table'中选择*其中'ID`=1 从'my_table'中选择*其中'ID`=1+1 从'my_table'中选择*其中'ID`=1 WTF 当MySql执行比较时,当两个比较值的数据类型不相同时,它将执行数据类型转换。在本例中,ID是数字的,您可以将其与字符串进行比较。所以MySql将把字符串转换成数字。它通过读取字符串开头的数字来实现这一点,一旦不再将其理解为数字,它就会停止 在您提供的所有三个示例中,数字都是1 您可以在MySq

以下所有查询都返回ID==1的行,这是为什么

从'my_table'中选择*其中'ID`=1 从'my_table'中选择*其中'ID`=1+1 从'my_table'中选择*其中'ID`=1 WTF

当MySql执行比较时,当两个比较值的数据类型不相同时,它将执行数据类型转换。在本例中,ID是数字的,您可以将其与字符串进行比较。所以MySql将把字符串转换成数字。它通过读取字符串开头的数字来实现这一点,一旦不再将其理解为数字,它就会停止

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


您可以在MySql文档中了解这一点:

当MySql执行比较时,当两个比较值的数据类型不相同时,它将执行数据类型转换。在本例中,ID是数字的,您可以将其与字符串进行比较。所以MySql将把字符串转换成数字。它通过读取字符串开头的数字来实现这一点,一旦不再将其理解为数字,它就会停止

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

您可以在MySql文档中了解这一点: