美文网首页
MySQL大小写敏感问题

MySQL大小写敏感问题

作者: Jarkata | 来源:发表于2019-04-09 16:20 被阅读0次

总结

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、字段内容默认情况下是大小写不敏感的。

修改大小写敏感

mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。
mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)

修改cnf配置文件或者编译的时候,需要重启服务。

MySQL存储的字段是不区分大小写的。这个有点不可思议。尤其是在用户注册的业务时候,会出现笑话。所以还是严格限制大小写敏感比如好。

如何避免字段内容区分大小写。就是要新增字段的校验规则。
可以看出默认情况下字段内容是不区分大小写的。大小写不敏感。

mysql> create table aa (a varchar(20) BINARY , c varchar(20)) ;
Query OK, 0 rows affected (0.10 sec)

mysql> show create table aa;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| aa | CREATE TABLE aa (
a varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
c varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select * from aa;
+------+------+
| a | c |
+------+------+
| a | C |
| a | C |
| A | c |
+------+------+
3 rows in set (0.00 sec)

mysql> select * from aa where a = 'a';
+------+------+
| a | c |
+------+------+
| a | C |
| a | C |
+------+------+
2 rows in set (0.00 sec)

mysql> select * from aa where a = 'A';
+------+------+
| a | c |
+------+------+
| A | c |
+------+------+
1 row in set (0.00 sec)

原因如下:
字段值的大小写由mysql的校对规则来控制。提到校对规则,就不得不说字符集。字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则 .
一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束 。比如 utf8字符集,utf8_general_ci,表示不区分大小写,这个是utf8字符集默认的校对规则;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。

记录下!

相关文章

  • mysql

    概述 记录一些使用MySQL会遇到的问题 1.MySQL设置大小写敏感 遇到两次因为MySQL大小写不敏感导致的数...

  • Linux下的jdbc 错误(mysql)

    注意mysql大小写敏感设置,Windows是默认大小写不敏感的,但是Linux是敏感的

  • MySQL大小写敏感问题

    总结 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:1、数据库名与表名是严格区分大小写的;...

  • mysql大小写敏感

    Mysql查询数据时,是大小写不敏感的,要想大小写敏感可在查询条件前加binary如

  • mysql主键大小写问题

    mysql的varchar做主键时,大小写不敏感。 但是erp对应的oracle数据库大小写不敏感,导致数据进入业...

  • Ubuntu/麒麟系统安装mysql,并修改大小写不敏感

    通过apt 安装MySQL Ubuntu/麒麟 修改大小写不敏感 如果需要修改大小写不敏感,则在此步进行修改。根据...

  • Linux Mysql

    Linux Mysql Mysql Workbench SQL 对大小写不敏感 SQL 分为两个部分 数据操作语言...

  • MySQL操作

    今天具体学了下 MySQL的操作;mysql 对大小写不敏感 所以大写只是为了区分关键字与 数据

  • 导数据遇到的问题之重复索引的问题

    在给nlp组导入数据到MySQL中遇到的问题之一,数据库设置的是大小写不敏感,然而,业务需要,要求keyword字...

  • KingBaseV8人大金仓数据库 | 大小写敏感问题

    1、查询数据库大小写是否敏感 如果显示 on,为大小写敏感;显示 off ,为大小写不敏感。 2、大小写是否敏感,...

网友评论

      本文标题:MySQL大小写敏感问题

      本文链接:https://www.haomeiwen.com/subject/xttiiqtx.html