[英]Mysql: comparing tinyint column with varchar value
我正在查看一些代码,并且发现了一些错误。 有人将tinyint列与varchar值进行了比较。
但是令人惊讶的是,这是可行的(其目的是与数值0进行比较)。
查询样例:
create table t1(x1 tinyint);
insert into t1 values (0),(0), (1), (2);
select * from t1 where x1 = 'live'
结果:
x1
0
0
我的问题是,为什么(任何)varchar值的行为与int / tinyint列的数值0相同?
MySQL在数字上下文中无提示地将字符串转换为数字。
它是通过将类似于数字的前导字符转换为数字来实现的。 如果没有数字,则值为0。
因此,由于这种转换,它等效于x1 = 0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.