首页 > 教程 >
MySQL的where查询的重新认识
2023-02-17教程围观次
简介今天加班,业务的妹子过来找我们查数据,说数据查出来量不对。一看妹子的SQL是这样写的:selectdistinct*fromprvt_pub_stmt_vnwhereissue_time>='2020-08-01'andissue_time='2020-08-01'andissue_time='2020-08-01'andissue_time
今天加班,业务的妹子过来找我们查数据,说数据查出来量不对。一看妹子的SQL是这样写的:
select distinct * from prvt_pub_stmt_vnwhere issue_time >= '2020-08-01'and issue_time <= '2020-08-01'and prs_dmtd_cde in ('p','n');
我分析来分析去,感觉没有问题呀,于是查了一下prs_dmtd_cde 字段的码值,发现不仅有大写的P还有小写的p,而妹子只查了小写的p,数据量却多了很多。
于是我就把妹子的SQL改了一下:
select distinct * from prvt_pub_stmt_vnwhere issue_time >= '2020-08-01'and issue_time <= '2020-08-01'and prs_dmtd_cde in ('p','n','P','N');
查出来的结果竟然是一样的。这就。。。
在妹子面前当然不能说不行啊,于是让妹子先回去再看看。
我这边飞快的上网查了查,发现竟然是 MySQL 的编码格式和排序规则的问题。
我们MySQL数据库基本上用的都是 utf8 的编码格式,而 utf8 编码格式还存在各种排序规则。常用的如下:
utf8_bin:将字符串中的每一个字符以十六进制方式存储数据,区分大小写。
utf8_general_ci:不区分大小写,ci为case insensitive的缩写,即大小写不敏感。
再查一下默认的字符集设置:
刚好 utf8 编码格式的默认排序规则就是:utf8_general_ci——即不区分大小写。
解决方案
问题原因找到了,那就对症下药好了。
解决方法自然就是直接修改字段的 collate 属性为 utf8_bin。
ALTER TABLE prvt_pub_stmt_vn CHANGE prs_dmtd_cde prs_dmtd_cde VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin;
另外还有一种解决方法,就是不改变原有表结构,而是改SQL。在查询字段前加上 binary 关键字。
select distinct * from prvt_pub_stmt_vnwhere issue_time >= '2020-08-01'and issue_time <= '2020-08-01'and binary prs_dmtd_cde in ('p','n');
Mysql 默认查询是不分大小写的,可以在 SQL 语句中加入 binary 来区分大小写。
binary 不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
最后
问题解决了,当然是去告诉妹子这个问题多么多么深奥,我又是如何剖析原理最终解决的了。
看着妹子投来的崇拜目光,当然是很开心了。
最最重要的还是要记住这个问题,以后在遇到字段大小写敏感的业务,建表的时候要注意字符集和排序规则的选择,以避免今天这种事情的发生。
下载链接:网站源码/小程序源码/网站模板下载
相关文章
- node mysql 小程序源码 nodejs连接数据库
- 使用PHP+ajax+mysql+layui实现每日签到及提醒功能
- PHP使用mysqli同时执行多条sql查询语句的实例
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- Mysql报错“Incorrect key file for table” 数据库表显示“使用中”解决办法
- 宝塔面板 - 通过宝塔面板安装的mysql 默认密码是什么
- 服务器硬盘空间不足导致MySQL异常的一系列问题及解决办法
- 在 MySQL 中 int (10) 和 int (11) 的区别
- MySQL 日期加减函数汇总
- MySQL密码加密与解密详解
下载排行
- WordPress主题 JustNews5.2.2 + QAPress问答插件适合源码站虚拟资源站个人博客
- ThinkPHP高仿蓝奏云网盘系统源码/对接易支付系统程序
- 最新JustMedia V2.7.3主题破解版去授权WordPress主题模板
- 最新去水印小程序源码分享/无需后台/对接接口/支持全网去水印功能
- 自带多平台解析接口短视频去水印图集水印小程序源码下载
- TooNaughty网址导航主题/WordPress主题下载
- 最新短视频去水印小程序源码/带流量主/外卖CPS系统/批量解析/修改MD5
- 某鱼最近卖的很火蓝色版微信去水印小程序源码+接口
- 最新版去水印小程序源码/基于WordPress的短视频去水印小程序源码
- 起点导航系统源码最新V2.6开源可运营版