MySQL equal运算符截断值,但无法按预期工作

MySQL equal运算符截断值,但无法按预期工作,mysql,equals,operator-keyword,Mysql,Equals,Operator Keyword,我刚刚发现MySQL的一个奇怪行为,关于相等运算符 在我的表示例中,我有一行id=914。 当我运行以下请求时: select * from example where id='914z'; MySQL返回id=914的行 为什么??? 我是说……'“914”不是“914z” 我认为这是完全不正常的。 如果您不这样做,请告诉我原因,我很乐意与您讨论。它的工作原理与它应该的完全一样,并且行为记录在案。有很好的例子: 以下示例演示了字符串到数字的转换 对于比较操作: mysql> SELEC

我刚刚发现MySQL的一个奇怪行为,关于相等运算符

在我的表示例中,我有一行id=914。 当我运行以下请求时:

select * from example where id='914z';
MySQL返回id=914的行

为什么??? 我是说……'“914”不是“914z” 我认为这是完全不正常的。
如果您不这样做,请告诉我原因,我很乐意与您讨论。

它的工作原理与它应该的完全一样,并且行为记录在案。有很好的例子:

以下示例演示了字符串到数字的转换 对于比较操作:

mysql> SELECT 1 > '6x'; -> 0
mysql> SELECT 7 > '6x'; -> 1
mysql> SELECT 0 > 'x6'; -> 0
mysql> SELECT 0 = 'x6'; -> 1

'914z'
被强制转换为一个数字,以便与
id
进行比较(假设
id
为数字类型)<代码>'914z'转换为数字时变为
914
。好的,谢谢。我明白了,但这对于平等比较来说是相当危险的/