话说Sorting和Collation

不知大家是否注意过,Sorting和Collation这两个词儿常在工作中被混用。但事实上,这二者不是一个概念,甚至不在一个层面上。

先看看这二者是如何进行定义的。Sorting是按照某种规则,对数据进行的分类、整理;而Collation则是对数字,字符进行某种顺序的装配、组合。还是一头雾水,不明就里?……
 
举个例子吧,假设某一本书籍是集体创作,作者名较多,那么作者列表是如何呈现给读者呢?最常见的一种应该是“按照作者姓名笔画排序”吧?这里的Sorting就是ORDER by name ASC(对姓名进行排序),Collation则是COLLATE Chinese_PRC_Stroke_CI_AS(按照姓名笔画)。再说的直白些,Sorting面向业务层面,关注显示,搜索,过滤的结果。Collation面向技术层面,关注特定自然语言环境下,字符、数字的期望排列规则。
 
这下了然了?好!那我们继续对Collation进行深入分析,尤其是对Collation的选择和使用问题上。首先看自然语言的哪些方面会对Collation的选择造成影响。
  • 字母顺序
  • 大小写
  • 修饰符号
  • 变音符号
  • 笔画 (CCJK)
  • 音节结构
 
其次,不同的数据库对于Collation的使用层级也有差别,总结如下。


从图中可以看到,针对不同的数据库使用场景,我们可以在Server, Database, Table Column, Expression等层面分别指定Collation。
 
最后还有一些关于Collation的选择标准,推荐如下:
  • 尽量选择utf8作为charset,utf8_unicode_ci作为对应的collation
  • 在项目和产品中尽可能使用单一的collation
  • 一旦发生必须使用多个collation的情况,注意避免collation冲突的情况发生
  • 注意collation的强行转换,这很可能会导致数据的遗失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值