`

MySQL查询时大小写区分问题

阅读更多

    今天在用mysql的数据做一个登录的验证的时候,发现登录的时候数据库中查询出来的用户名不会区分大小写,后来百度了下才知道原因。

MYSQL在默认的情况下查询是不区分大小写的,例如:


mysql> create table t1(
    -> name varchar(10));
Query OK, 0 rows affected (0.09 sec)

mysql> insert into t1 values('admin'),('Admin'),('ADmin');
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0
对这个表,缺省情况下,下面两个查询的结果是一样的:

 

mysql> select * from t1 where name = 'admin';
+------+
| name |
+------+
| you  |
| You  |
| YOU  |
+------+
3 rows in set (0.00 sec)

mysql> select * from t1 where name = Admin';
+------+
| name |
+------+
|admin  |
|Admin  |
|ADmin  |
+------+
3 rows in set (0.00 sec)

如果想让MYSQL知道你输入的字母是大写还是小写的,修改表:

mysql> alter table t1 change name name varchar(10) binary;
Query OK, 3 rows affected (0.20 sec)
Records: 3  Duplicates: 0  Warnings: 0

 

mysql> select * from t1 where name = 'admin';
+------+
| name |
+------+
|admin |
+------+
1 row in set (0.00 sec)

mysql> select * from t1 where name = 'Admin';
+------+
| name |
+------+
|Admin |
+------+
1 row in set (0.00 sec)

如果你只是想在SQL语句中实现的话:

mysql> select * from t1 where name = binary 'Admin';
+------+
| name |
+------+
|Admin |
+------+
1 row in set (0.02 sec)

mysql> select * from t1 where name = binary 'admin';
+------+
| name |
+------+
|admin  |
+------+
1 row in set (0.00 sec)

 

如果不想这么麻烦而想服务一开启就让大小写一致的话:
可以修改my.ini或者my.cnf
[mysqld]
 lower_case_table_names=1
(0:区分;1:不区分)
然后重启MYSQL服务。

mysql> show variables like '%case_table%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
1 row in set (0.00 sec)

注:WINDOWS系统不用修改,系统默认就是1
LINUX 系统默认是0。因为LINUX下的脚本都是区分大小写的

0
6
分享到:
评论

相关推荐

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

    ### MySQL 8.0 大小写敏感性问题详解 #### 一、引言 MySQL 8.0作为MySQL数据库的重要版本更新,引入了一系列的新特性与优化改进,其中包括对数据库和表名大小写敏感性的调整。这一变化对于新老用户来说都需要一定...

    使MySQL查询区分大小写.doc

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

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

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

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

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

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

    同时,在查询字符串时,MySQL 是大小写不敏感的,这也会导致大小写问题的产生。 在实际应用中,这个问题可能会引起一些问题,例如在插入数据时可能会发生 Duplicate entry Error,或者在查询时返回的结果不正确。...

    mysql大小写敏感

    如果想在查询时区分字段值的大小写,可以将字段值设置为 BINARY 属性。可以使用 CREATE TABLE 语句或 ALTER 语句来设置 BINARY 属性。 在 MySQL 中,数据库对应数据目录中的目录,每个表至少对应数据库目录中的一个...

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

    通过在`my.cnf`配置文件中设置`lower_case_table_names=1`,并重启MySQL服务,可以轻松地改变这一行为,使得MySQL在查询时不再区分表名的大小写。同时,了解如何控制字段值的大小写敏感性,可以提供更灵活的数据管理...

    数据库区分大小写的设置

    MySQL在处理字符串时,默认是区分大小写的。但在实际应用中,我们可以通过多种方式调整这一行为: 1. **创建表时指定大小写敏感性**: - 可以在创建表时为某个字段指定 `BINARY` 属性来使其区分大小写。 ```sql ...

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

    MySQL查询时区分字符串中字母大小写的方法主要涉及字符集(character set)和校对规则(collation)。MySQL默认的行为是不区分字符串中的字母大小写,这可能会在某些场景下引起困扰,比如在需要严格区分大小写的...

    MySQL修改配置 区分大小写

    当`lower_case_table_names`设置为0时,MySQL将对这些对象的名字进行完全区分大小写的比较,这意味着创建时的大小写必须在后续的查询中严格保持一致。而如果设置为1,则表示MySQL会将所有名称转换为小写,从而在比较...

    0积分:MySql表名大小写的问题.txt

    例如,在Windows系统上安装MySQL时,默认情况下表名是不区分大小写的。而在Linux环境下,默认设置可能会使表名区分大小写。本文将详细介绍如何理解和解决这一问题。 --- ### MySQL中表名大小写敏感性的背景与原理 ...

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

    在执行查询时,仍需要确保遵循表名和数据库名的原始大小写格式,以避免潜在的问题。此外,如果你已经有一个区分大小写的数据库,更改此设置可能导致已有的大小写敏感的表名无法正常识别,所以在生产环境中修改这个...

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

    ### PostgreSQL数据库对象名大小写敏感的解决方法 在IT领域,特别是数据库管理中,了解不同数据库管理系统...在PostgreSQL中,遵循上述指导原则可以有效避免因大小写问题导致的错误,确保数据查询和操作的顺利进行。

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

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

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

    5. 如果希望在查询时区分字段值的大小写,可以为字段设置BINARY属性。例如: - 创建表时设置:`CREATE TABLE T(A VARCHAR(10) BINARY);` - 或者通过ALTER语句修改:`ALTER TABLE T MODIFY A VARCHAR(10) BINARY;` ...

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

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

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

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

Global site tag (gtag.js) - Google Analytics