今天遇到一个情况, 查询数据时查询条件输入不管大小写,都能查到同样的数据。 比如: 输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件是大小写不敏感的。
因为程序使用了hibernate框架访问mysql数据库。 一开始以为是hibernate的问题。 最跟踪了一下hibernate代码没有看到转换大小写的步骤,最后确认hibernate其实只不过是将hql转化为sql。大小写不敏感和hibernate没有关系。
于是怀疑Mysql的问题。做个实验:直接使用客户端用sql查询数据库。 发现的确是大小不敏感 。
通过查询资料发现需要设置collate(校对) 。 collate规则:
*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写
解决方法。
1.可以将查询条件用binary()括起来。 比如: select * from TableA where columnA like binary('aaa');
2. 可以修改该字段的collation 为 binary
比如:
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
解决该问题
分享到:
相关推荐
今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感。 解决方案一: 于是怀疑Mysql的问题。做个实验:直接使用客户端用sql查询数据库。 发现的确是...
使MySQL查询区分大小写,sql 语句 查询
Mysql查询操作 MySql下实现查询表名不区分大小写
mysql设置不区分大小写 windows下 到安装mysql的目录,修改my.ini文件 在文件最后一行加上下面一句话 lower_case_table_names=1 说明 0:区分大小写,1:不区分大小写 效果如下 [mysqld] port = 3306 basedir=F...
MySQL8.0之后,数据库和表名称的大小写问题与之前的MySQL设置不同,需要引起重视,不然后续修改很麻烦。
MySQL默认是不区分大小写的,这个涉及到collate字符集与校验规则方面的知识,下面会讲到,这里我们就来详解MySQL查询时区分字符串中字母大小写的方法.
今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?
mysql 查询时没有对字符串区分大小写的原因主要在于创建表时没有指定其校对规则,或者校对规则设置成了不区分大小写。 区分大小写的设置通常是: utf8****_bin ,以 “_bin” 结尾的表示区分大小写,它表示的是:...
mysql查出数据不区分大小写.md
在MySQL中,对于Column Collate其约定的命名方法如下: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,...
您可能感兴趣的文章:MySql查询不区分大小写解决方案(两种)MySQL中查询的有关英文字母大小写问题的分析Mysql大小写敏感的问题Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误教你如何在...
mysql基础-不设置区分大小写
区分大小写(即对大小写不敏感),默认是这种设置。这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用。 2)lower_case_table_names = 1 不区分大小写(即对大小写敏感)。这样...