MySQL where查询字段大小写
发布时间:2021-07-16, 09:23:52 分类:Linux | 编辑 off 网址 | 辅助
正文 1141字数 156,356阅读
select distinct * from prvt_pub_stmt_vn
where issue_time >= '2020-08-01'
and issue_time <= '2020-08-01'
and prs_dmtd_cde in ('p','n');
Run code
Cut to clipboard
select distinct * from prvt_pub_stmt_vn
where issue_time >= '2020-08-01'
and issue_time <= '2020-08-01'
and prs_dmtd_cde in ('p','n','P','N');
Run code
Cut to clipboard
查出来的结果竟然是一样的
MySQL数据库基本上用的都是 utf8 的编码格式,而 utf8 编码格式还存在各种排序规则。常用的如下:
utf8_bin:将字符串中的每一个字符以十六进制方式存储数据,区分大小写。
utf8_general_ci:不区分大小写,ci为case insensitive的缩写,即大小写不敏感。
utf8 编码格式的默认排序规则就是:utf8_general_ci——即不区分大小写。
解决方案
1.直接修改字段的属性为
utf8_bin
Run code
Cut to clipboard
ALTER TABLE prvt_pub_stmt_vn CHANGE prs_dmtd_cde prs_dmtd_cde VARCHAR(255)
CHARACTER SET utf8 COLLATE utf8_bin;
Run code
Cut to clipboard
2.不改变原有表结构,而是改SQL
在查询字段前加上
binary
Run code
Cut to clipboard
select distinct * from prvt_pub_stmt_vn
where issue_time >= '2020-08-01'
and issue_time <= '2020-08-01'
and binary prs_dmtd_cde in ('p','n');
Run code
Cut to clipboard
Mysql 默认查询是不分大小写的,可以在 SQL 语句中加入 binary 来区分大小写。
binary 不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,
可以理解为在字符串比较的时候区分大小写。
作者:Coder杨公子
链接:https://juejin.cn/post/6871780646939803655
来源:掘金
链接:https://juejin.cn/post/6871780646939803655
来源:掘金
(支付宝)给作者钱财以资鼓励 (微信)→
暂无评论 »