温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MYSQL的varchar与数值举例分析

发布时间:2021-12-04 14:25:11 来源:亿速云 阅读:212 作者:iii 栏目:云计算

本篇内容主要讲解“MYSQL的varchar与数值举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL的varchar与数值举例分析”吧!

事件起源

好了来说具体场景,被同事叫去看一个奇怪的SQL。SQL语句很简单,大概就是查询某些字段有一些查询条件而已。其中比较重要的一个条件就是 「where xx!=0」。说是很奇怪,为什么!=0就查询到的结果就是10条。但是!=1 查询出来的结果就是100条。

SELECT A,B,C FROM TABLE WHERE A!=0
res:10 
SELECT A,B,C FROM TABLE WHERE A!=0
res:100
 

下面我们简单的来几条数据看一下状况。

状况复现

「所有数据」

MYSQL的varchar与数值举例分析  

「!=0」

MYSQL的varchar与数值举例分析  

当时就是直接拿到了这样的结果。 

分析状况

当时看到这个问题之后我也很惊奇,不等于0 不应该把所有的数据都拿到么。为什么会出现这样的情况呢?

简单考虑了一下,字段的类型为 varchar型,而查询条件给予的是个数值型,那么问题应该就是出现在这里。

数据库在基于查询条件进行检索的时候会如何进行操作呢?
答案就是转换成相同的类型。

那么对于这次的问题是字段转换成int类型还是int转换成varchar类型呢?其实简单的看查询结果就知道了。如果查询条件‘0’转换成了varchar那么就应该获取到全部的数据。但是现在的状况是获取到的数据不够。那结论就是数据库把要查询的字段转换成了数值型。
那么我们把app字段进行转换一下试试。

MYSQL的varchar与数值举例分析  

从结果上我们可以看到 app 转换之后的结果只有 0123asfj 转换成了123,其他都是0。所以在查询条件为 ‘!=0’ 的时候就只能查询到一条结果。

到此,相信大家对“MYSQL的varchar与数值举例分析”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI