`
daoshud1
  • 浏览: 556615 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

解决MySQL查询不区分大小写

 
阅读更多
今天遇到一个情况, 查询数据时查询条件输入不管大小写,都能查到同样的数据。 比如: 输入 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;

http://my.oschina.net/xiangtao/blog/33983
分享到:
评论

相关推荐

    解决MySQl查询不区分大小写的方法讲解

    在本文中,我们探讨了解决MySQL查询不区分大小写问题的几种方法: 1. **更改字符集和排序规则(Collation)**: MySQL的排序规则决定了字符串比较时是否区分大小写。默认的排序规则如`utf8_general_ci`是不区分大...

    MySql查询不区分大小写解决方案(两种)

    本文将详细介绍两种解决MySQL查询不区分大小写问题的方法。 **方法一:使用BINARY函数** 在查询语句中,你可以使用BINARY函数来强制进行区分大小写的比较。BINARY关键字将字符串转换为二进制形式,从而进行字节...

    使MySQL查询区分大小写.doc

    在MySQL中,查询默认情况下通常是不区分大小写的,但如果你想让你的查询对大小写敏感,有几种方法可以实现。以下是一些关键知识点和步骤来帮助你在MySQL中进行区分大小写的查询。 1. **设置列的Collation** - **...

    MySQL的SQL语句大小写不敏感问题解决方案

    MySQL 的 SQL 语句大小写不敏感问题解决方案 MySQL 的 SQL 语句大小写不敏感问题是一个普遍存在的问题,特别是在 Linux 和 Windows 两种操作系统下。这个问题的产生是由于 MySQL 在不同的操作系统下对大小写的处理...

    有关MySQL8.0大小写敏感的问题

    然而,在8.0版本中,MySQL对此进行了重大改动:该参数现在只能在服务器初始化时进行配置,并且默认值在不同的操作系统上有区别——Windows下默认为1(大小写不敏感),而在Linux下则保持不变,仍为0(大小写敏感)。...

    MySQL表名不区分大小写的设置方法

    此外,尽管设置为1可以使MySQL在逻辑上不区分大小写,但为了保持一致性,建议在定义表名和编写SQL语句时始终使用小写,避免因大小写问题引起不必要的困扰。 在开发过程中,特别是涉及跨平台的应用,了解并适当地...

    数据库区分大小写的设置

    `2` 表示在Windows系统中不区分大小写而在其他系统中区分大小写。 #### 总结 通过对SQL Server和MySQL中区分大小写的设置进行深入了解,我们可以更好地根据实际需求调整数据库的行为。无论是创建表时指定字段属性...

    MySql下实现查询表名不区分大小写

    这行配置告诉MySQL服务器,无论在创建数据库或表时使用什么大小写,都将所有表名转换为小写进行存储和比较,从而在查询操作中实现了大小写不敏感。 ### 重启MySQL服务 修改完配置文件后,需要重启MySQL服务以使...

    详解MySQL查询时区分字符串中字母大小写的方法

    MySQL默认的行为是不区分字符串中的字母大小写,这可能会在某些场景下引起困扰,比如在需要严格区分大小写的数据库操作中。以下是对这一主题的详细解释。 首先,字符集是用于表示和存储文本数据的编码方式,如UTF-8...

    mysql大小写敏感

    MySQL 在 Linux 下默认情况下是严格区分表名和数据库名的大小写,而在 Windows 下则不区分大小写。 在 Linux 下,MySQL 的默认设置是区分表名的大小写,不区分列名的大小写。可以通过添加 lower_case_table_names=...

    mysql如何设置不区分大小写

    mysql设置不区分大小写 windows下 到安装mysql的目录,修改my.ini文件 在文件最后一行加上下面一句话 lower_case_table_names=1 说明 0:区分大小写,1:不区分大小写 效果如下 [mysqld] port = 3306 basedir=F...

    MySQL修改配置 区分大小写

    MySQL是一种广泛使用的开源关系型数据库管理系统,其默认配置在处理表名、列名以及数据库名时通常是不区分大小写的。然而,根据业务需求,有时我们需要让MySQL对这些名称进行大小写敏感的处理,例如在开发多语言应用...

    mysql基础-不设置区分大小写

    在本文中,我们将探讨如何在Windows和Linux操作系统上设置MySQL使其不区分大小写。 首先,我们要了解`lower_case_table_names`这个配置选项。这是一个用于控制MySQL服务器如何处理表名和数据库名大小写的参数。当`...

    LINUX系统下mysql的大小写区分问题.docx

    尽管列名在大多数情况下不区分大小写,但如果你想在查询时区分字段值的大小写,可以对字段设置BINARY属性。BINARY属性确保比较时考虑字符的ASCII值,而不是忽略大小写。有三种方式可以设置BINARY属性: A. 创建表时...

    PostgreSQL数据库对象名大小写敏感的解决方法

    `UPPER()`可以将字符串转换为大写,而`ILIKE`则用于不区分大小写的字符串比较。 ##### 示例查询语句 ```sql -- 使用UPPER()函数 SELECT * FROM "TUser" WHERE UPPER("Name") LIKE '%TONY%'; -- 使用ILIKE操作符 ...

    mysql查出数据不区分大小写.md

    mysql查出数据不区分大小写.md

    使MySQL查询区分大小写的实现方法

    在MySQL中,对于Column Collate其约定的命名方法如下: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,...

Global site tag (gtag.js) - Google Analytics