我有一个包含STATUS TINYINT(1)列和DEFAULT 0的表。此列的所有记录现在都为0。当我在status ='active'的地方查询时,结果似乎忽略了这个子句并返回所有结果。这是SQL还是MySQL的默认行为?
答案 0 :(得分:2)
正在发生的事情是MySQL正在进行静默转换。当在数字上下文中使用字符串时,它将根据前导数字转换为数字。
'active'
中没有前导数字。因此,该值将转换为0.因此,您的逻辑变为(转换后):
status = 0
注意类型和用于比较的常数。