排序规则基本概念和误区
来源:互联网 发布:液压制图软件 编辑:程序博客网 时间:2024/06/05 19:38
前言
昨天在论坛里面遇到一个比较特殊的场景。他的公司做的是海外的项目,中英再加一个当地语言,要兼容三种文字啊.
那有没有什么字符集或排序规则,能兼容所有文字的?对于海外项目很痛苦啊 .Oracle 有AL32UTF8 ,MySQL 有UTF8 ,那SQL Server 有吗?
基本概念
- Unicode 是「字符集」
- UTF-8 是「编码规则」
- 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
- 编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
排序规则
比如我们常用的:Chinese_PRC_CI_AS ,前面部分是Chinese_PRC 这个部分表示支持的中国大陆的字符集。但是这里有个特别需要注意的事项,划重点,在很多博客上面会有这样的描述:
大陆简体字UNICODE的排序规则
这里有很大的歧义。并不是说这个排序规则对所有字符都是有的Unicode。这样说并不准确。
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)
_AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)
_KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)
_WI(WS) 是否区分宽度 WI不区分,WS区分(width-insensitive/width-sensitive)
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项
Unicode
SQL SERVER 是支持Unicode的。对应的字符类型是nchar,nvarchar.
总结
所以,SQL SERVER 没有这样的和ORACLE UTF-8类似的排序规则。。如果是三种文字,建议把所有的字符类型定义为nchar,nvarchar 。
- 排序规则基本概念和误区
- 树的基本概念和遍历规则
- 排序的基本概念和分类
- 排序的基本概念和分类
- 数据结构之排序:排序基本概念和各种排序方法总结
- 关联规则基本概念
- 关联规则的基本概念
- 关联规则挖掘:基本概念
- 排序基本概念
- 排序基本概念
- mapreduce GroupingComparator mapreduce排序规则和分组规则
- Shell排序误区
- java排序(1):基本概念和各种排序的概述
- 关于微信新版运营规则的八大误区和解读
- 修改MYSQL的字符集和排序规则
- 策略模式和自定义排序规则
- 【0012】mysql字符集和排序规则
- 排序规则
- Django入门-6:视图-HttpReqeust对象
- Django学习(七)(模板进阶)
- <线段树版>codevs 3304 水果姐逛水果街Ⅰ
- 安卓盒子按钮后门和退出的方法
- poj 2653 Pick-up sticks
- 排序规则基本概念和误区
- 1046. 划拳(15)
- 微服务架构下的事务一致性保证
- 三大框架整合struts+spring+hibernate
- Activity跳转增加图片过渡
- 第8章-常用优先级和css3
- 鼎科TSUX6V6.0-E液晶电视驱动板维修
- Qt 中 Q_OBJECT与no such slot的问题
- HDU