gpt4 book ai didi

Mysql:将 tinyint 列与 varchar 值进行比较

转载 作者:行者123 更新时间:2023-11-29 06:16:16 24 4
gpt4 key购买 nike

我正在研究一些代码,一些错误引起了我的注意。有人将 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

关于Mysql:将 tinyint 列与 varchar 值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35723627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com