繁体   English   中英

MySQL:比较tinyint列和varchar值

[英]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

Sqlfiddle

我的问题是,为什么(任何)varchar值的行为与int / tinyint列的数值0相同?

MySQL在数字上下文中无提示地将字符串转换为数字。

它是通过将类似于数字的前导字符转换为数字来实现的。 如果没有数字,则值为0。

因此,由于这种转换,它等效于x1 = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM