本篇内容主要讲解“MySQL的varchar与数值举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL的varchar与数值举例分析”吧!
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、网站制作、埇桥区网络推广、微信小程序定制开发、埇桥区网络营销、埇桥区企业策划、埇桥区品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供埇桥区建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
事件起源
好了来说具体场景,被同事叫去看一个奇怪的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
下面我们简单的来几条数据看一下状况。
状况复现
「所有数据」
「!=0」
当时就是直接拿到了这样的结果。
分析状况
当时看到这个问题之后我也很惊奇,不等于0 不应该把所有的数据都拿到么。为什么会出现这样的情况呢?
简单考虑了一下,字段的类型为 varchar型,而查询条件给予的是个数值型,那么问题应该就是出现在这里。
数据库在基于查询条件进行检索的时候会如何进行操作呢?
答案就是转换成相同的类型。
那么对于这次的问题是字段转换成int类型还是int转换成varchar类型呢?其实简单的看查询结果就知道了。如果查询条件‘0’转换成了varchar那么就应该获取到全部的数据。但是现在的状况是获取到的数据不够。那结论就是数据库把要查询的字段转换成了数值型。
那么我们把app字段进行转换一下试试。
从结果上我们可以看到 app 转换之后的结果只有 0123asfj 转换成了123,其他都是0。所以在查询条件为 ‘!=0’ 的时候就只能查询到一条结果。
到此,相信大家对“MYSQL的varchar与数值举例分析”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网站标题:MYSQL的varchar与数值举例分析
文章出自:http://scgulin.cn/article/ishhge.html