作者:冬季梅花1991_156 | 来源:互联网 | 2020-10-01 20:08
刚好 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 >= &#39;2020-08-01&#39;and issue_time <= &#39;2020-08-01&#39;and binary prs_dmtd_cde in (&#39;p&#39;,&#39;n&#39;);
Mysql 默认查询是不分大小写的,可以在 SQL 语句中加入 binary 来区分大小写。
binary 不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
最后
问题解决了,当然是去告诉妹子这个问题多么多么深奥,我又是如何剖析原理最终解决的了。
看着妹子投来的崇拜目光,当然是很开心了。
最最重要的还是要记住这个问题,以后在遇到字段大小写敏感的业务,建表的时候要注意字符集和排序规则的选择,以避免今天这种事情的发生。
想了解更多编程学习,敬请关注php培训栏目!
以上就是MySQL的where查询的重新认识的详细内容,更多请关注 第一PHP社区 其它相关文章!