【mysql】当where后接字符串,查询时会发生什么?
好久没有研究一个“深层次”的问题了。
首先来看我们为什么要讨论这个问题~

首先这是一个正常的数据库查询,我们可以看到在ruizhi数据库里的chouka表内,所有数据如图。
现在,我们运行查询:
select * from chouka where "qq=915620310";
select * from chouka where "1qq=915620310";
我们来看看结果:

可以看到,第一句结果为空,第二句结果为全查。两句的差别在于,第二句的“”内,在第一句“”内的内容前加了一个1.
为什么会出现这种情况呢?
mysql在把字符串强转成数字有三种方式:
方法一:SELECT CAST('123' AS SIGNED);
方法二:SELECT CONVERT('123',SIGNED);
方法三:SELECT '123'+0;
where后的条件,最终是以数字的形式进行比较,换言之where后的条件,最终生成的结果都是数字,所以要发生字符串向数字的转换,转换规则如上。
换句话说,如果字符串无法直接转换成数字,则字符串会进行前置数字正则匹配,成为最终的结果。我们来看看演示:

好了,现在你应该明白如果where后跟的是字符串,那么判定条件究竟会发生如何的变化。
我们为什么要探究这个问题呢?这是因为,在一些开发框架中,为了防止参数恶意注入,会对所有注入的参数“转化成字符串”,这时候,应该尤其注意这个规则,以避免出现全查/空集的情况。
【mysql】当where后接字符串,查询时会发生什么?的更多相关文章
- Mysql 中的日期时间字符串查询
一.将数据库中的Date格式的数据,或者指定日期的字符串格式化为想要的样式 DATE_FORMAT (date, format)能根据格式串format 格式化日期或日期和时间值date,返回结果字符 ...
- 【mysql】MySQL以逗号隔开的字符串查询方式整理
1 单个值查询使用函数进行处理,FIND_IN_SET()实用 SELECT * FROM `by_info` WHERE FIND_IN_SET(',type_id); 2 多个值模糊查询,使用正则 ...
- php查询mysql中的json编码后的字符串内容的方法
问题 mysql里存的是json编码后的字符串,其中中文会被转为unicode码,所以直接查询是查询不到的. mysql里的查询如 like "%\u6211\u662f%" 也是 ...
- 【MySQL】过滤后的结果集较大,用LIMIT查询分页记录,查询效率不理想
> 参考的优秀文章 优化LIMIT分页--<高性能MySQL>(电子工业出版社) > 场景描述 遇到一个场景:查询排序后的结果集较大,我们采用分页显示,每页显示20条记录,但是 ...
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...
- MySQL 对分组后的同类数据进行拼接字符串
MySQL 对分组后的同类数据进行拼接字符串 写后台方法时遇到个问题,需要将表内同一订单号的操作记录流水进行简单拼接输出,不想取出来再操作,找了个mysql的方法直接操作 //group_concat ...
- 数据库入门(mySQL):数据操作与查询
增删改 单表查询 多表查询 一.增删改 1.插入数据记录(增) insert into table_name(field1,field2,field3,...fieldn) valuses(value ...
- MySql(六)单表查询
十.单表查询 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制 ...
- mySQL 教程 第4章 数据查询
mySQL运算符 这些运算符在SQL查询中用得到. 算数运算符 + 加 - 减 * 乘 / DIV 除 % MOD 取余数 比较运算符 = 等于 <> != 不等于 < <= ...
随机推荐
- 谁说码农不懂浪漫?(js写的'老婆生日快乐'特效)
一直被老婆抱怨不懂浪漫,老婆的生日又来了,老婆指着闺蜜空间上贴的老公做的胡萝卜心形浪漫晚餐告诉我:必须送她一份用心的礼物.我绞尽脑汁想出这么一法子,还是得用我们码农的独特方式,经过一天多的努力,终于做 ...
- 远程连接工具PuTTY和MTPuTTY
PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件 官网 http://www.chiark.greenend.org.uk/~sgtatham/putty/ putty ...
- 【蓝桥杯单片机12】实时时钟DS1302的基本操作
[蓝桥杯单片机12]实时时钟DS1302的基本操作 广东职业技术学院 欧浩源 实时时钟DS1302几乎是蓝桥杯“单片机设计与开发”每年必考的内容,虽然在竞赛现场有提供一个底层读写寄存器的库文件,但是作 ...
- Python练习-Property的用法
# 编辑者:闫龙 #要求一:自定义用户信息数据结构,写入文件,然后读出内容,利用eval重新获取数据结构 with open('user.db','w') as write_file:#创建并以写入的 ...
- 如何在Maven和Gradle中配置使用Groovy 2.4与Spock 1.0
如何在Maven和Gradle中配置使用Groovy 2.4与Spock 1.0 原文 https://dzone.com/articles/spock-10-groovy-24 翻译 hxfiref ...
- 2016.5.15——leetcode:Number of 1 Bits ,
leetcode:Number of 1 Bits 代码均测试通过! 1.Number of 1 Bits 本题收获: 1.Hamming weight:即二进制中1的个数 2.n &= (n ...
- 20155303 2016-2017-2 《Java程序设计》第九周学习总结
20155303 2016-2017-2 <Java程序设计>第九周学习总结 目录 学习内容总结(Linux命令) 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...
- mysql状态查看 QPS/TPS/缓存命中率查看【转】
运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries ...
- 一步一步搭建11gR2 rac+dg之DG 机器配置(七)【转】
DG 机器配置 转自: 一步一步搭建11gR2 rac+dg之DG 机器配置(七)-lhrbest-ITPUB博客http://blog.itpub.net/26736162/viewspace-12 ...
- CKEDITOR的内容js转码,C#控制器解码接收
<script type="text/javascript" src="<%=Url.Content("~/Resource/ckeditor/ck ...