mysql的collation区分大小写设置
mysql的collation区分大小写设置
mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由于mysql的字符校验规则的设置。通常默认是不支持的大小写字母敏感的,在主动设置mysql数据库的collation后,可以使得数据库满足大小写敏感,适合客户的一定要求。通过下面的试验进行理解学习.....
- mysql> select version();
- +-----------+
- | version() |
- +-----------+
- | 5.5.25 |
- +-----------+
- 1 row in set (0.00 sec)
- mysql> show variables like '%character%';
- +--------------------------+-------------------------------------------------------
- | Variable_name | Value
- +--------------------------+-------------------------------------------------------
- | character_set_client | utf8
- | character_set_connection | utf8
- | character_set_database | latin1
- | character_set_filesystem | binary
- | character_set_results | utf8
- | character_set_server | latin1
- | character_set_system | utf8
- | character_sets_dir | D:\database\mysql\mysql-5.5.25-winx64\share\charsets\
- mysql> show variables like '%collation%';
- +----------------------+-------------------+
- | Variable_name | Value |
- +----------------------+-------------------+
- | collation_connection | utf8_general_ci |
- | collation_database | latin1_swedish_ci |
- | collation_server | latin1_swedish_ci |
- +----------------------+-------------------+
- 3 rows in set (0.00 sec)
默认即为:collation_connection = utf8_general_ci 大小写不敏感校验规则;
- mysql> show collation like '%utf8%';
- +--------------------------+---------+-----+---------+----------+---------+
- | Collation | Charset | Id | Default | Compiled | Sortlen |
- +--------------------------+---------+-----+---------+----------+---------+
- | utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |
- | utf8_bin | utf8 | 83 | | Yes | 1 |
- | utf8_unicode_ci | utf8 | 192 | | Yes | 8 |
- | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 |
客户端字符集:utf8, 校验规则: utf8_general_ci, 默认为yes,即不是大小写敏感的匹配;
而utf8_bin是区分大小写的校验规则;
创建表做测试,看数据效果:
- mysql> create table T_collation(first varchar(30) character set utf8
- -> collate utf8_bin,second varchar(30) character set utf8 collate
- -> utf8_general_ci);
- Query OK, 0 rows affected (0.32 sec)
- mysql> show create table t_collation\G;
- *************************** 1. row ***************************
- Table: t_collation
- Create Table: CREATE TABLE `t_collation` (
- `first` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
- `second` varchar(30) CHARACTER SET utf8 DEFAULT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1
- 1 row in set (0.00 sec)
- ERROR:
- No query specified
- mysql> insert into t_collation values('M','M'),('N','N'),('a','a'),('b','b');
- Query OK, 4 rows affected (0.13 sec)
- Records: 4 Duplicates: 0 Warnings: 0
- mysql> select * from t_collation;
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- | N | N |
- | a | a |
- | b | b |
- +-------+--------+
- 4 rows in set (0.00 sec)
比较查询结果:
- mysql> insert into t_collation values('m','m'),('n','n');
- Query OK, 2 rows affected (0.10 sec)
- Records: 2 Duplicates: 0 Warnings: 0
- mysql> select * from t_collation;
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- | N | N |
- | a | a |
- | b | b |
- | m | m |
- | n | n |
- +-------+--------+
- 6 rows in set (0.00 sec)
- mysql> select * from t_collation where first='m';
- +-------+--------+
- | first | second |
- +-------+--------+
- | m | m |
- +-------+--------+
- 1 row in set (0.02 sec)
- mysql> select * from t_collation where second='m';
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- | m | m |
- +-------+--------+
- 2 rows in set (0.00 sec)
- mysql> select * from t_collation where second='M';
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- | m | m |
- +-------+--------+
- 2 rows in set (0.00 sec)
- mysql> select * from t_collation where first='M';
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- +-------+--------+
- 1 row in set (0.00 sec)
比较各自的校验规则,utf8_bin是区分大小写的,而utf8_general_ci是不区分的,默认的。
还可以从排序语句中进行比较,看看测试效果的.....
- mysql> select * from t_collation;
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- | N | N |
- | a | a |
- | b | b |
- | m | m |
- | n | n |
- +-------+--------+
- 6 rows in set (0.00 sec)
- mysql> select * from t_collation order by first;
- +-------+--------+
- | first | second |
- +-------+--------+
- | M | M |
- | N | N |
- | a | a |
- | b | b |
- | m | m |
- | n | n |
- +-------+--------+
- 6 rows in set (0.00 sec)
- mysql> select * from t_collation order by second;
- +-------+--------+
- | first | second |
- +-------+--------+
- | a | a |
- | b | b |
- | M | M |
- | m | m |
- | N | N |
- | n | n |
- +-------+--------+
- 6 rows in set (0.00 sec)
同样符合校验规则的检查。
结论: 在MYSQL数据库中,根据实际业务需要,适当可以调整字符集的(collation)校验规则,修改默认的大小写敏感问题,满足实际需要,这本身就是数据库的一种设置,熟悉标准、规则,适当利用为项目所用,可以针对具体的数据库或者表或者表的列进行设置。
from: http://xiaobo.iteye.com/blog/1830942
mysql的collation区分大小写设置相关推荐
- mysql指定collation_MySql:charset和collation的设置
MySql:charset和collation的设置 charset 和 collation 有多个级别的设置:服务器级.数据库级.表级.列级和链接级 www.2cto.com 1.服务器级 查看设置 ...
- mysql select 区分大小写,MySql查询不区分大小写解决方案(两种)
当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查 ...
- MySQL数据库端字符集设置
最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法. 基本概念 • 字符(Character)是指人类语言中最小 ...
- 设置MySQL排序方式_设置MySQL设置字符集和排序方式
1. 编辑/etc/my.cnf文件, 在"[client]"下添加"default-character-set=utf8" 2. 编辑/etc/my.cnf文 ...
- MySQL 字段内容区分大小写
数据由Oracle 迁入MySQL ,由于之前Oracle区分大小写,MySQL的配置使用了默认配置,导致一些数据导入失败,有的唯一键报错,冲突. 将测试过程记录在下面. 数据库版本:MySQL 5. ...
- MYSQL数据库字符编码设置
mysql字符集编码设置与查看命令 转自http://www.111cn.net/database/mysql/55781.htm 在mysql对字符编码的查看我们使用SHOW VARIABLES L ...
- mysql字符集在哪设置_MySQL字符集设置
最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法. 基本概念 • 字符(Character)是指人类语言中最小 ...
- 使mysql查询条件区分大小写 数据库搜索中大小写敏感性
在默认情况下,mysql搜索不区分大小写(但某些字符集始终区分大小写,如czech).这意味着,如果你使用col_name LIKE 'a%'进行搜索,你将获得以A或a开始的所有列. 如果打算使搜索区 ...
- linux mysql设置数据库utf_Linux系统下MySQL数据库服务器字符集设置
Linux认证考试:Linux系统下的MySQL数据库服务器字符集设置 启动MySQL后,以root登录mysql isher@isher-ubuntu:~$ mysql -u root >sh ...
最新文章
- Window对象中setInterval()和setTimeout()的区别
- 自动 Android* 应用测试
- 如何去设计一个自适应的网页设计或HTMl5
- JavaScript代码检验工具——JS Lint工具安装指南
- SAP方丈-写给新手的SAP成本核算流程
- python3urllib常见使用_Python3 urllib常用操作
- find命令结合exec和xargs使用的区别
- mysql join explain_详解 MySQL 中的 explain
- python娃娃在地上摆积木_Python中乐高积木——函数
- 华为云计算hcip证书有效期_华为云计算HCIP V4.0认证要发布了!
- 1 Framework inner error (expect END descriptor with depth 1 but get another
- 【个人向】《春物》 小说原文关键段落摘录
- ubuntu设置开机启动程序
- 简单的运动模糊效果实现
- qt在window实现调取本机摄像头或者外设摄像头二维码识别升级版
- Leecode 1658. 将 x 减到 0 的最小操作数 滑动窗口
- 小白月赛23-G 树上求和
- URP Lit Shader解析(1)
- android官网被封掉了,只好用这个网站进谷歌了!嘎嘎
- 可以Ping通,却无法使用IE上网的几种可能性
热门文章
- Java对存储过程的调用方法 --转载
- linux文件操作命令--转
- include、ViewStub、merge优化布局标签
- 白话uni-app 【也是html、vue、小程序的区别】
- insightface和facenet效果+性能比较
- 4'.deploy.prototxt
- 并发编程-14线程安全策略之并发容器(J.U.C)中的集合类
- Linux root用户忘记密码解决方法
- php session 函数,PHP中Session()函数使用
- 本地git存储库关闭_Git 入门:术语基础 | Linux 中国