mysql的collation区分大小写设置

mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由于mysql的字符校验规则的设置。通常默认是不支持的大小写字母敏感的,在主动设置mysql数据库的collation后,可以使得数据库满足大小写敏感,适合客户的一定要求。通过下面的试验进行理解学习.....

Sql代码  
  1. mysql> select version();
  2. +-----------+
  3. | version() |
  4. +-----------+
  5. | 5.5.25    |
  6. +-----------+
  7. 1 row in set (0.00 sec)
Sql代码  
  1. mysql> show variables like '%character%';
  2. +--------------------------+-------------------------------------------------------
  3. | Variable_name            | Value
  4. +--------------------------+-------------------------------------------------------
  5. | character_set_client     | utf8
  6. | character_set_connection | utf8
  7. | character_set_database   | latin1
  8. | character_set_filesystem | binary
  9. | character_set_results    | utf8
  10. | character_set_server     | latin1
  11. | character_set_system     | utf8
  12. | character_sets_dir       | D:\database\mysql\mysql-5.5.25-winx64\share\charsets\
Sql代码  
  1. mysql> show variables like '%collation%';
  2. +----------------------+-------------------+
  3. | Variable_name        | Value             |
  4. +----------------------+-------------------+
  5. | collation_connection | utf8_general_ci   |
  6. | collation_database   | latin1_swedish_ci |
  7. | collation_server     | latin1_swedish_ci |
  8. +----------------------+-------------------+
  9. 3 rows in set (0.00 sec)

默认即为:collation_connection = utf8_general_ci   大小写不敏感校验规则;

Sql代码  
  1. mysql> show collation like '%utf8%';
  2. +--------------------------+---------+-----+---------+----------+---------+
  3. | Collation                | Charset | Id  | Default | Compiled | Sortlen |
  4. +--------------------------+---------+-----+---------+----------+---------+
  5. | utf8_general_ci          | utf8    |  33 | Yes     | Yes      |       1 |
  6. | utf8_bin                 | utf8    |  83 |         | Yes      |       1 |
  7. | utf8_unicode_ci          | utf8    | 192 |         | Yes      |       8 |
  8. | utf8_icelandic_ci        | utf8    | 193 |         | Yes      |       8 |

客户端字符集:utf8, 校验规则: utf8_general_ci, 默认为yes,即不是大小写敏感的匹配;

而utf8_bin是区分大小写的校验规则;

创建表做测试,看数据效果:

Sql代码  
  1. mysql> create table T_collation(first varchar(30) character set utf8
  2. -> collate utf8_bin,second varchar(30) character set utf8 collate
  3. -> utf8_general_ci);
  4. Query OK, 0 rows affected (0.32 sec)
  5. mysql> show create table t_collation\G;
  6. *************************** 1. row ***************************
  7. Table: t_collation
  8. Create Table: CREATE TABLE `t_collation` (
  9. `first` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  10. `second` varchar(30) CHARACTER SET utf8 DEFAULT NULL
  11. ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  12. 1 row in set (0.00 sec)
  13. ERROR:
  14. No query specified
  15. mysql> insert into t_collation values('M','M'),('N','N'),('a','a'),('b','b');
  16. Query OK, 4 rows affected (0.13 sec)
  17. Records: 4  Duplicates: 0  Warnings: 0
  18. mysql> select * from t_collation;
  19. +-------+--------+
  20. | first | second |
  21. +-------+--------+
  22. | M     | M      |
  23. | N     | N      |
  24. | a     | a      |
  25. | b     | b      |
  26. +-------+--------+
  27. 4 rows in set (0.00 sec)

比较查询结果:

Sql代码  
  1. mysql> insert into t_collation values('m','m'),('n','n');
  2. Query OK, 2 rows affected (0.10 sec)
  3. Records: 2  Duplicates: 0  Warnings: 0
  4. mysql> select * from t_collation;
  5. +-------+--------+
  6. | first | second |
  7. +-------+--------+
  8. | M     | M      |
  9. | N     | N      |
  10. | a     | a      |
  11. | b     | b      |
  12. | m     | m      |
  13. | n     | n      |
  14. +-------+--------+
  15. 6 rows in set (0.00 sec)
  16. mysql> select * from t_collation where first='m';
  17. +-------+--------+
  18. | first | second |
  19. +-------+--------+
  20. | m     | m      |
  21. +-------+--------+
  22. 1 row in set (0.02 sec)
  23. mysql> select * from t_collation where second='m';
  24. +-------+--------+
  25. | first | second |
  26. +-------+--------+
  27. | M     | M      |
  28. | m     | m      |
  29. +-------+--------+
  30. 2 rows in set (0.00 sec)
  31. mysql> select * from t_collation where second='M';
  32. +-------+--------+
  33. | first | second |
  34. +-------+--------+
  35. | M     | M      |
  36. | m     | m      |
  37. +-------+--------+
  38. 2 rows in set (0.00 sec)
  39. mysql> select * from t_collation where first='M';
  40. +-------+--------+
  41. | first | second |
  42. +-------+--------+
  43. | M     | M      |
  44. +-------+--------+
  45. 1 row in set (0.00 sec)

比较各自的校验规则,utf8_bin是区分大小写的,而utf8_general_ci是不区分的,默认的。

还可以从排序语句中进行比较,看看测试效果的.....

Sql代码  
  1. mysql> select * from t_collation;
  2. +-------+--------+
  3. | first | second |
  4. +-------+--------+
  5. | M     | M      |
  6. | N     | N      |
  7. | a     | a      |
  8. | b     | b      |
  9. | m     | m      |
  10. | n     | n      |
  11. +-------+--------+
  12. 6 rows in set (0.00 sec)
  13. mysql> select * from t_collation order by first;
  14. +-------+--------+
  15. | first | second |
  16. +-------+--------+
  17. | M     | M      |
  18. | N     | N      |
  19. | a     | a      |
  20. | b     | b      |
  21. | m     | m      |
  22. | n     | n      |
  23. +-------+--------+
  24. 6 rows in set (0.00 sec)
  25. mysql> select * from t_collation order by second;
  26. +-------+--------+
  27. | first | second |
  28. +-------+--------+
  29. | a     | a      |
  30. | b     | b      |
  31. | M     | M      |
  32. | m     | m      |
  33. | N     | N      |
  34. | n     | n      |
  35. +-------+--------+
  36. 6 rows in set (0.00 sec)

同样符合校验规则的检查。

结论: 在MYSQL数据库中,根据实际业务需要,适当可以调整字符集的(collation)校验规则,修改默认的大小写敏感问题,满足实际需要,这本身就是数据库的一种设置,熟悉标准、规则,适当利用为项目所用,可以针对具体的数据库或者表或者表的列进行设置。

from: http://xiaobo.iteye.com/blog/1830942

mysql的collation区分大小写设置相关推荐

  1. mysql指定collation_MySql:charset和collation的设置

    MySql:charset和collation的设置 charset 和 collation 有多个级别的设置:服务器级.数据库级.表级.列级和链接级 www.2cto.com 1.服务器级 查看设置 ...

  2. mysql select 区分大小写,MySql查询不区分大小写解决方案(两种)

    当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查 ...

  3. MySQL数据库端字符集设置

    最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法. 基本概念 • 字符(Character)是指人类语言中最小 ...

  4. 设置MySQL排序方式_设置MySQL设置字符集和排序方式

    1. 编辑/etc/my.cnf文件, 在"[client]"下添加"default-character-set=utf8" 2. 编辑/etc/my.cnf文 ...

  5. MySQL 字段内容区分大小写

    数据由Oracle 迁入MySQL ,由于之前Oracle区分大小写,MySQL的配置使用了默认配置,导致一些数据导入失败,有的唯一键报错,冲突. 将测试过程记录在下面. 数据库版本:MySQL 5. ...

  6. MYSQL数据库字符编码设置

    mysql字符集编码设置与查看命令 转自http://www.111cn.net/database/mysql/55781.htm 在mysql对字符编码的查看我们使用SHOW VARIABLES L ...

  7. mysql字符集在哪设置_MySQL字符集设置

    最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法. 基本概念 • 字符(Character)是指人类语言中最小 ...

  8. 使mysql查询条件区分大小写 数据库搜索中大小写敏感性

    在默认情况下,mysql搜索不区分大小写(但某些字符集始终区分大小写,如czech).这意味着,如果你使用col_name LIKE 'a%'进行搜索,你将获得以A或a开始的所有列. 如果打算使搜索区 ...

  9. linux mysql设置数据库utf_Linux系统下MySQL数据库服务器字符集设置

    Linux认证考试:Linux系统下的MySQL数据库服务器字符集设置 启动MySQL后,以root登录mysql isher@isher-ubuntu:~$ mysql -u root >sh ...

最新文章

  1. Window对象中setInterval()和setTimeout()的区别
  2. 自动 Android* 应用测试
  3. 如何去设计一个自适应的网页设计或HTMl5
  4. JavaScript代码检验工具——JS Lint工具安装指南
  5. SAP方丈-写给新手的SAP成本核算流程
  6. python3urllib常见使用_Python3 urllib常用操作
  7. find命令结合exec和xargs使用的区别
  8. mysql join explain_详解 MySQL 中的 explain
  9. python娃娃在地上摆积木_Python中乐高积木——函数
  10. 华为云计算hcip证书有效期_华为云计算HCIP V4.0认证要发布了!
  11. 1 Framework inner error (expect END descriptor with depth 1 but get another
  12. 【个人向】《春物》 小说原文关键段落摘录
  13. ubuntu设置开机启动程序
  14. 简单的运动模糊效果实现
  15. qt在window实现调取本机摄像头或者外设摄像头二维码识别升级版
  16. Leecode 1658. 将 x 减到 0 的最小操作数 滑动窗口
  17. 小白月赛23-G 树上求和
  18. URP Lit Shader解析(1)
  19. android官网被封掉了,只好用这个网站进谷歌了!嘎嘎
  20. 可以Ping通,却无法使用IE上网的几种可能性

热门文章

  1. Java对存储过程的调用方法 --转载
  2. linux文件操作命令--转
  3. include、ViewStub、merge优化布局标签
  4. 白话uni-app 【也是html、vue、小程序的区别】
  5. insightface和facenet效果+性能比较
  6. 4'.deploy.prototxt
  7. 并发编程-14线程安全策略之并发容器(J.U.C)中的集合类
  8. Linux root用户忘记密码解决方法
  9. php session 函数,PHP中Session()函数使用
  10. 本地git存储库关闭_Git 入门:术语基础 | Linux 中国