MySQL系列:utf8_bin和utf8_general_ci编码的区别
2024-08-27 12:08:06
MySQL中存在多种格式的utf8编码,其中最常见的两种为:
- utf8_bin
- utf8_general_ci
utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写;
utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感,为utf8默认编码。
示例:
CREATE TABLE `t_bin` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; CREATE TABLE `t_ci` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; CREATE TABLE `t_default` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
执行以下语句:
insert into t_bin values (1, 'Alex');
insert into t_bin values (2, 'alex'); insert into t_ci values (1, 'Alex');
insert into t_ci values (2, 'alex'); insert into t_default values (1, 'Alex');
insert into t_default values (2, 'alex');
结果如下:
root@zow 11:13:44>insert into t_bin values (1, 'Alex');
Query OK, 1 row affected (0.01 sec) root@zow 11:14:14>insert into t_bin values (2, 'alex');
Query OK, 1 row affected (0.01 sec) root@zow 11:14:17>insert into t_ci values (1, 'Alex');
Query OK, 1 row affected (0.00 sec) root@zow 11:14:32>insert into t_ci values (2, 'alex');
ERROR 1062 (23000): Duplicate entry 'alex' for key 'uk_name'
root@zow 11:14:36>insert into t_default values (1, 'Alex');
Query OK, 1 row affected (0.01 sec) root@zow 11:14:50>insert into t_default values (2, 'alex');
ERROR 1062 (23000): Duplicate entry 'alex' for key 'uk_name'
分析:
编码为utf8_bin时,Alex和alex被认为是两个不同的值,区分大小写;
编码为utf8_general_ci时,即默认的编码时,Alex和alex被认为是相同的值,不区分大小写。
所以在选择编码的时候应该注意区分。
最新文章
- Expert 诊断优化系列------------------你的CPU高么?
- Win8.1安装Visual Studio 2015提示需要KB2919355
- java常量池存放在哪里
- quick Cocos2dx lua 接anysdk
- PHP 小方法之 仿百度蜘蛛采集
- C#泛型-模板特化
- 自定义tableViewCell
- 一个Nodejs的简单计算測试程序
- JavaScript中的內定物件與函式: arguments, callee, caller, this, apply(), call()
- 7 RandomAccessFile读取文件内容保存--简单例子(需要验证)
- 完整的yuicompressor单个压缩和批量压缩以及gzip再次压缩,拦截器的配置等
- Javascript里的if判断与逻辑运算符(||, &;&;)和比较运算符的特别之处
- 【原创】java NIO FileChannel 学习笔记 FileChannel 简介
- docker 部署cassandra
- vue中的适配:px2rem
- 概念、DW介绍
- pytest 的 yield
- IntelliJ IDEA 2017版 spring-boot 2.03 去除控制台logo;去除springboot 图标;去除springboot 图
- 用Execute操作数据库
- SpringCloud学习指南【更新】
热门文章
- Qt &; opencv 学习(一)
- spin_lock、spin_lock_irq、spin_lock_irqsave区别
- 数据结构之 栈与队列--- 走迷宫(深度搜索dfs)
- HDU1569 方格取数(2) —— 二分图点带权最大独立集、最小割最大流
- POJ3621 Sightseeing Cows 最优比率环 二分法
- 教你开发jQuery插件
- Android Studio运行出现项目 错误:非法字符:“\ufeff”
- ORACLE 创建表空间及用户
- codeforces 673A A. Bear and Game(水题)
- I.MX6 Android /data 目录内容