今天在用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对这个表,缺省情况下,下面两个查询的结果是一样的:
+------+ | 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知道你输入的字母是大写还是小写的,修改表:
|
如果你只是想在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下的脚本都是区分大小写的
相关推荐
MySQL8.0之后,数据库和表名称的大小写问题与之前的MySQL设置不同,需要引起重视,不然后续修改很麻烦。
使MySQL查询区分大小写,sql 语句 查询
当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感。 解决方案一: 于是怀疑Mysql的问题。做个实验:直接使用客户端用sql查询数据库。 发现的确是...
Mysql查询操作 MySql下实现查询表名不区分大小写
LINUX系统下mysql的大小写区分问题.docx
MySQL默认是不区分大小写的,这个涉及到collate字符集与校验规则方面的知识,下面会讲到,这里我们就来详解MySQL查询时区分字符串中字母大小写的方法.
mysql 查询时没有对字符串区分大小写的原因主要在于创建表时没有指定其校对规则,或者校对规则设置成了不区分大小写。 区分大小写的设置通常是: utf8****_bin ,以 “_bin” 结尾的表示区分大小写,它表示的是:...
在MySQL中,对于Column Collate其约定的命名方法如下: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,...
mysql设置不区分大小写 windows下 到安装mysql的目录,修改my.ini文件 在文件最后一行加上下面一句话 lower_case_table_names=1 说明 0:区分大小写,1:不区分大小写 效果如下 [mysqld] port = 3306 basedir=F...
您可能感兴趣的文章:MySql查询不区分大小写解决方案(两种)MySQL中查询的有关英文字母大小写问题的分析Mysql大小写敏感的问题Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误教你如何在...
mysql基础-不设置区分大小写
mysql查出数据不区分大小写.md
今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
linux下mysql默认是要区分表名大小写的。mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中: 1)lower_case_table_names = 0 区分大小写(即对大小写不敏感),默认是这种设置。这样设置后,...
说明: MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、 表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例: aliyun _ admin , rdc _ config , level 3_
原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1、用root登录,修改 /etc/my.cnf;2、在[mysqld]节点下,加入一行: lower_case_table_names=13、重启MySQL即可; 其中 ...