Mysql中校对集utf8_unicode_ci与utf8_general_ci的区别说明
下面摘录一下Mysql 5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明:
当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。
utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß'等于‘ss'。
utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的 校对规则相比,比较正确性较差)。
例如,使用utf8_general_ci和utf8_unicode_ci两种 校对规则下面的比较相等:
Ä = A
Ö = O
Ü = U
两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:
ß = s
但是,对于utf8_unicode_ci下面等式成立:
ß = ss
对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集 校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。
utf8_general_ci也适用与德语和法语,除了‘ß'等于‘s',而不是‘ss'之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。
相关推荐
-
全面了解mysql中utf8和utf8mb4的区别
一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换.当然,为了节省空间,一般情况下使用utf8也就够了. 二.内容描述 那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了.三个字节的 UT
-
Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别.. ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a' 那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以. utf8_general_
-
Mysql中校对集utf8_unicode_ci与utf8_general_ci的区别说明
下面摘录一下Mysql 5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明: 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法.一些字符还是不能支持.并且,不能完全支持组合的记号.这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt .Tatar.Bashkir和Mari. utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时.例如,在德语和一些其它语言中'ß'等于'ss'. u
-
mysql中的utf8与utf8mb4存储及区别
目录 一.如何设置utf8mb4 二.问题 1.为什么存储的时候要区分utf8和utf8mb4 2.为什么读取的时候要区分utf8和utf8mb4 一.如何设置utf8mb4 mysql中针对字符串类型,在设置charset的时候可以精确到字段. 如果只将某个字段设置utf8mb4,那么其他字段不会受影响. 如果针对表来设置,那么已经存在的字段依然是utf8,并且会多出utf8的标记,之后所创建的字段才会是utf8mb4. 如果针对库来设置,那么已经存在的表依然是utf8,之后所创建的表才会是u
-
MySQL中in与exists的使用及区别介绍
先放一段代码 for(int i=0;i<1000;i++){ for(int j=0;j<5;j++){ System.out.println("hello"); } } for(int i=0;i<5;i++){ for(int j=0;j<1000;j++){ System.out.println("hello"); } } 分析以上代码可以看到两行代码除了循环的次序不一致意外,其他并无区别,在实际执行时两者所消耗的时间和空间应该也是一
-
MySQL中distinct和group by去重效率区别浅析
目录 一.distinct 二.group by 三.distinct 和 group by 比较 总结 一.distinct distinct的作用 在mysql中,distinct关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,distinct只可以在select中使用 distinct的原理 distinct进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端,在这个分组的过程可能会出现两种不同
-
MySQL中create table as 与like的区别分析
本文分析了MySQL中create table as 与like的区别.分享给大家供大家参考,具体如下: 对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? 复制代码 代码如下: create table t2 as select * from t1 where 1=2; 或者 复制代码 代码如下: limit 0; as创建出来的t2表(新表)缺少t1表(源表)的索引信息,只有表结构相同,没有索引. 复制代码 代码如
-
MySQL中Decimal类型和Float Double的区别(详解)
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值. float,double类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理.这样我们在存取货币值的时候自然遇到问题,我的default值为:0.00而实际存储是0,同样我存取货币为12.00,实际存储是12. 幸好mysql提供
-
MySQL中索引与视图的用法与区别详解
前言 本文主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 索引 一.概述 所有的Mysql列类型都可以被索引. mysql支持BTREE索引.HASH索引.前缀索引.全文本索引(FULLTEXT)[只有MyISAM引擎支持,且仅限于char,varchar,text列].空间列索引[只有MyISAM引擎支持,且索引的字段必须非空],但不支持函数索引. MyISAM和InnoDB存储引擎的表默认创建BTREE索引,
-
MySQL中int (10) 和 int (11) 的区别
mysql 中整数数据类型: 不同类型的取值范围: 不同数据类型的默认v显示宽度: 显示的宽度跟负号没有关系,它只在人工设置了 ZEROFILL 属性有效.一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数). 那取值范围和显示宽度到底有什么关系呢?利用 tinyint 做了个实验, 首先创建一张表如下: mysql> desc test_integer; +-----------+------------+------+-
-
浅谈mysql中int(1)和int(10)的区别
目录 困惑 数据说话 零填充 总结 困惑 最近遇到个问题,有个表的要加个user_id字段,user_id字段可能很大,于是我提mysql工单alter table xxx ADD user_id int(1).领导看到我的sql工单,于是说:这int(1)怕是不够用吧,接下来是一通解释. 其实这不是我第一次遇到这样的问题了,其中不乏有工作5年以上的老司机.包括我经常在也看到同事也一直使用int(10),感觉用了int(1),字段的上限就被限制,真实情况肯定不是这样. 数据说话 我们知道在mys
-
MySQL中int(10)和int(11)的区别详解
目录 一.背景 二.MySQL整数类型 总结: 一.背景 在创建数据库表的时候,我们经常会用到int(x)来定义一个字段的类型,一直误以为这里的x表示存储数字的长度. 其实大错特错,这里的 x 指的是 最大显示宽度(最大有效显示宽度是255),且显示宽度与存储大小或类型包含的值的范围无关. 二.MySQL整数类型 类型 字节 取值范围 显示宽度 tinyint 1 -128 ~ 127 4 smallint 2 -32768 ~ 32767 6 mediumint 3 -8388608 ~ 83
随机推荐
- 关于延迟加载JavaScript
- tomcat环境变量详细配置步骤
- Java多线程并发编程 Volatile关键字
- Python使用Pycrypto库进行RSA加密的方法详解
- JS Testing Properties 判断属性是否在对象里的方法
- Javascript removeChild()删除节点及删除子节点的方法
- 在网页中使用document.write时遭遇的奇怪问题
- SuperSlide标签切换、焦点图多种组合插件
- 挑战4道Java试题
- 关闭时刷新父窗口两种方法
- javascript html5 canvas实现可拖动省份的中国地图
- hadoop client与datanode的通信协议分析
- 勾子程序q.dll大战!清杀方法
- 在Heroku云平台上部署Python的Django框架的教程
- Winform动态加载TabControl用法实例
- Android判断当前App是在前台还是在后台
- 基于jquery的多功能软键盘插件
- python机器学习实战之最近邻kNN分类器
- MongoDB分片键的选择和案例实例详解
- Android WebView打开网页一片空白的解决方法