MySQL equal运算符截断值,但无法按预期工作
我刚刚发现MySQL的一个奇怪行为,关于相等运算符 在我的表示例中,我有一行id=914。 当我运行以下请求时: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
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
。好的,谢谢。我明白了,但这对于平等比较来说是相当危险的/