其中smallInteger等于字符串返回结果

问题描述

我有一个带有smallInteger列的表,其中2条记录为零值。

如果我在下面运行查询,则返回结果:

select `status` from users where `status` = 'confirmed'

怎么可能?

enter image description here

实际上任何字符串都将返回此记录。

解决方法

mysql会将CHAR的值强制转换为SMALLINT,因为'confirmed'不是数字,它将返回0

所以这:0 = 'confirmed'被解释为这个0 = CAST('confirmed as SMALLINT)',其值为0 = 0

因此,当列status0时,它等于'confirmed'作为SMALLINT

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...