时间:2021-05-24
背景
下面我们来看一下执行的结果
在上面的描述中我们还得注意就是,你的where条件的字符串不加单引号必须是全数字。不然就会报错
还有可能查出来的数据不是我们想要的数据。如下图
分析
如上图所述:
1054 - Unknown column '000w1993521' in 'where clause', Time: 0.008000s我们先来看一下一条SQL的执行过程
(网图)
隐式转换
1. 产生条件
当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。则会发生转换隐式
发生隐式转换的条件:
2. 分析实际遇到的情况
1.那我们也就清楚了,上面我提出的例子是整数和字符串的比较,那就属于其他情况了。那我们就先来分析一下索引失效的原因
2.查询出不匹配的值(或者说是部分匹配的值),如上面的查询结果。这真得看看源码了,这也就是MYsql的隐式转换规则。这里不就细分析了(因为没有查到相关的文档)
由于历史原因,需要兼容旧的设计,可以使用 MySQL 的类型转换函数 cast 和 convert,来明确的进行转换。
总结
参考
https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
https://xiaomi-info.github.io/2019/12/24/mysql-implicit-conversion/
https://zhuanlan.zhihu.com/p/95170837
到此这篇关于Mysql 5.6 “隐式转换”导致的索引失效和数据不准确的问题的文章就介绍到这了,更多相关Mysql 5.6隐式转换导致的索引失效内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、隐式可选型的基本使用varerrorMessage:String?=nilerrorMessage="NotFound""Themessageis"
使用RegExp的显式构造函数,语法为:newRegExp("pattern"[,"flags"])。使用RegExp的隐式构造函数,采用纯文本格式:/patt
使用RegExp的显式构造函数,语法为:newRegExp("pattern"[,"flags"])。使用RegExp的隐式构造函数,采用纯文本格式:/patt
Python3实现mysql连接和数据框的形成,具体代码如下所示:#-*-coding:utf-8-*-#__author__="LQ"importpymysq
显式转换与隐式转换类型之间的转换可以分为隐式转换与显式转换,如int类型可直接转换为long类型。复制代码代码如下:intintNum=23;l