查询错误数据类型时,mysql查询忽略where子句

时间:2016-03-05 21:51:53

标签: mysql sql

我有一个包含STATUS TINYINT(1)列和DEFAULT 0的表。此列的所有记录现在都为0。当我在status ='active'的地方查询时,结果似乎忽略了这个子句并返回所有结果。这是SQL还是MySQL的默认行为?

1 个答案:

答案 0 :(得分:2)

正在发生的事情是MySQL正在进行静默转换。当在数字上下文中使用字符串时,它将根据前导数字转换为数字。

'active'中没有前导数字。因此,该值将转换为0.因此,您的逻辑变为(转换后):

status = 0

注意类型和用于比较的常数。