`

MySQL 查询时强制区分大小写

阅读更多

平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写。但作为用户信息,一旦用户名重复,又会浪费很多资源。再者,李逵、李鬼的多起来,侦辨起来很困难。要做到这一点,要么在建表时,明确大小写敏感(字段明确大小写敏感)。如果通盘数据库所有字段都需要大小写敏感,不如在字符集设置时做好调整。不过,通常不建议这么做。

 

如果跟我一样,数据库已经在线上跑了,一个表上百万条数据,做字段类型变更有可能导致数据库宕机。那么好吧,在查询时,多加个单词好了!

 

例如,一般查询:

 

SELECT * FROM U WHERE name LIKE 'a%';
SELECT * FROM U WHERE name LIKE 'A%';

其结果是一样的,为了区分'A%'和'a%',可以这么做:

 

SELECT * FROM U WHERE binary name LIKE 'a%';
SELECT * FROM U WHERE binary name LIKE 'A%';
仅仅多了一个binary,就可以得到不同的结果!

 

当然,如果需要建表时强制区分大小写,可以这么写:

 

create  table  table_name(  
     name varchar (20) binary    
);

 就这么简单!

5
5
分享到:
评论
6 楼 caijingbin0207 2012-09-20  
5 楼 xuboqiang77 2012-09-20  
收了。。
4 楼 snowolf 2012-09-20  
xiaohuafyle 写道
icefishc 写道
会造成索引失效吧?

盼详细说明

如果只是查询,没有任何关系。
如果是建表就定义了binary,跟索引不会有什么关系。索引本身就是对数据做弱唯一性标识,如果建表做了binary约束,那对于索引的建立,应该是有利的。
3 楼 xiaohuafyle 2012-09-20  
icefishc 写道
会造成索引失效吧?

盼详细说明
2 楼 icefishc 2012-09-20  
会造成索引失效吧?
1 楼 奋斗的西瓜 2012-09-20  
顶一个~~~

相关推荐

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

    在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询条件中使用了不同的大小写字母,比如"aaa"和"Aaa",它们会被视为相同,从而可能导致你期望的精确匹配失败。这对于一些特定场景,比如...

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

    可以在查询语句中直接使用`BINARY`关键字来强制区分大小写,如: ```sql SELECT * FROM usertable WHERE BINARY id='AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'; ``` 2. 在创建表时设置: 创建表时,可以在字段定义中...

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

    在MySQL数据库中,查询操作默认情况下是不区分大小写的,这意味着如果你在查询时输入的字符串与数据库中的数据在大小写上不完全匹配,查询仍然可能返回结果。这在某些场景下可能会导致意料之外的问题,比如在用户...

    mysql 查询时没有对字符串区分大小写处理方法

    这样,`code`字段的比较将在查询时强制区分大小写。 3. 重建表并指定校对规则: 如果整个表都需要区分大小写,最佳做法是备份数据,然后重建表,并在建表语句中指定`_bin`校对规则,如: ```sql CREATE TABLE `...

    mysql表名忽略大小写配置方法详解

    在Linux系统中,默认情况下MySQL是区分大小写的,而在Windows系统中则通常是不区分大小写的。对于开发者来说,保持一致性是至关重要的,特别是在跨平台的应用中。本文将详细介绍如何在MySQL中配置表名忽略大小写,...

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

    在MySQL中,数据库默认的查询行为通常是不区分大小写的,这在处理英文字符时可能会造成不便。特别是当你需要进行精确匹配,例如用户输入的用户名或密码必须与存储的值完全一致(包括大小写)时,就需要使查询区分大...

    MySQL大小写敏感导致的问题分析

    说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例: aliyun _ admin , rdc _ config , level 3_

    Mysql大小写敏感的问题

    默认情况下,MySQL在查询时对表名和列名是不区分大小写的,这主要取决于你的操作系统和MySQL配置。例如,`CREATE TABLE NAME (name VARCHAR(10))`,在这之后,无论你使用`SELECT * FROM TABLE NAME WHERE name='...

    linux mysql中的坑

    2. **Linux环境**:而在Linux环境下,默认情况下MySQL严格区分大小写,这意味着在创建表或引用表时必须确保名称完全匹配(包括大小写)。 这种行为差异往往会成为从Windows环境迁移到Linux环境时的一个常见陷阱。 ...

    MySQL数据库应用与开发实训报告.doc

    在数据库管理中,可以改变数据库的字符集和校对规则,例如将数据库字符集更改为gb2312,使其支持简体中文且不区分大小写。此外,还可以通过相关SQL语句查询数据库的结构信息,了解其内部构成。 接下来是【表及数据...

    mysql 数据库小写转换为大写的解决方案

    具体来说,在Linux环境下,这些对象名称是区分大小写的;而在Windows环境中,默认情况下这些名称则不区分大小写。这种差异可能导致跨平台迁移时出现一些意外问题。例如,如果在Linux环境下创建了名为`test_table`的...

    MySQL中使用replace、regexp进行正则表达式替换的用法分析

    如果你需要区分大小写,可以使用BINARY关键字来强制REGEXP进行大小写敏感匹配。 另外,可以使用字符类在方括号中列出希望匹配的任意一个字符集。例如,要找出名字中包含字母'a'或'b'或'c'的所有记录,可以使用: ...

    安装MySQL数据库.docx

    设置`lower_case_table_names = 1`使得数据库不区分大小写,`sql_mode`定义严格模式,以及其他相关参数。 6. **初始化数据库**: 在安装libaio库之后,使用`/usr/local/mysql/bin/mysqld --initialize --user=...

    vb.net操作MYSQL

    这些参数的顺序不是强制性的,且不区分大小写。这些参数具有特定的名称定义,例如: - `Server`: MySQL服务器的地址。 - `Database`: 要连接的数据库名称。 - `Uid`: 用户名。 - `Pwd`: 密码。 - `Port`: 连接端口...

    MySql无法退出Sql命令行编辑.doc

    - **大小写敏感性**:MySQL关键字和函数名称通常不区分大小写,例如`SELECT`、`select`和`SeLeCt`被视为相同。 - **计算功能**:除了执行数据库操作外,MySQL还可以用作简单的计算器,支持基本的数学运算,例如加减...

    有关MySQL数据库与标准的兼容性问题 电脑资料.docx

    数据库和表名在区分大小写的文件系统中是区分大小写的。因此,创建和管理数据库和表时需要注意文件名的大小写一致性。 6. **特殊语法**: - **LIKE**:在数字列上也可以使用LIKE操作符。 - **INTO OUTFILE**:...

    MySQL安装教程,及相关问题

    若项目无法识别表名大小写,可能是因为MySQL默认在Linux环境下区分大小写。可以通过以下方式设置为不区分大小写: - 使用root用户登录MySQL。 - 修改`/etc/my.cnf`配置文件中的`lower_case_table_names`选项为`1...

Global site tag (gtag.js) - Google Analytics