MySQL中0、'0'作为条件时的区别

本文解析了在MySQL中使用IN操作符查询包含数字的字符串字段时出现的意外结果问题。通过对比不同查询方式,揭示了MySQL默认进行类型转换的特性,解释了为何某些查询条件会返回非预期的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、现象:

今天查询时,某字段x为varchar

可能的值为A B C 0 1 2 3 4

想把0 1 2 3 4的所有数据查出,使用的SQL为

select * from table where x in (0,1,2,3,4)

结果发现,会把所有数据都查出

但是,使用

select * from table where x in ('0',1,2,3,4)

查出数据即为正常数据

 

二、原因:

经查阅,默认情况下,MySQL会尽量进行类型转换

所以,当字符串转为整数时,如A、B、C这种值会转换失败,则返回0,所以符合查询条件

转载于:https://www.cnblogs.com/punkrocker/p/10428685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值