前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySql查询不区分大小写解决方案

MySql查询不区分大小写解决方案

作者头像
翎野君
发布2023-05-12 20:49:14
1.7K0
发布2023-05-12 20:49:14
举报
文章被收录于专栏:翎野君翎野君

背景

当我们输入不管大小写都能查询到数据,例如:输入 lingyejun 或者Lingyejun ,LingYeJun都能查询同样的结果,说明查询条件对大小写不敏感。 CREATE TABLE NAME(name VARCHAR(10));

对这个表,缺省情况下,下面两个查询的结果是一样的:

SELECT * FROM TABLE NAME WHERE name='lingyejun';

SELECT * FROM TABLE NAME WHERE name='Lingyejun';

办法

解决方案一:

于是怀疑Mysql的问题。做个实验:直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。

通过查询资料发现需要设置collate(校对) 。 collate规则

  •  *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
  •  *_cs: case sensitive collation,区分大小写
  •  *_ci: case insensitive collation,不区分大小写

一般而言我们设置字符集注意以下两种:

utf8_general_ci --不区分大小写

utf8_bin--区分大小写

当字符设置为不区分大小写时的解决办法:

1.可以将查询条件用binary()括起来。  比如:  

代码语言:javascript
复制
select * from TableA where binary columnA ='lingyejun';

2. 可以修改该字段的collation 为 binary

比如:

代码语言:javascript
复制
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

解决方案二:

mysql查询默认是不区分大小写的 如:

代码语言:javascript
复制
select * from some_table where str=‘lingyejun';
select * from some_table where str='LINGYEJUN';

得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做:

第一种方法: 要让mysql查询区分大小写,可以:

代码语言:javascript
复制
select * from some_table where binary str='lingyejun'
select * from some_table where binary str='LINGYEJUN'

第二方法:

在建表时时候加以标识

代码语言:javascript
复制
create table some_table(
   str char(20) binary
)

原理:

对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的 校对规则。BINARY属性是指定列字符集的二元 校对规则的简写。排序和比较基于数值字符值。因此也就自然区分了大小写。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 办法
    • 解决方案一:
      • 解决方案二:
      • 原理:
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档