一、排序规则的概念
SQL Server能存储许多种世界上的书写语言中使用的文字。然尔,并非每一种语言都遵循相同的排序或数据比较规则。排序规则(collation sequence)控制着SQL Server在执行存储、检索、排序和比较操作时如何对待字符数据。
排序规则定义了支持的字符集,包括是否区分大小写、重音及假名。例如,英文版SQL Server默认的排序规则是SQL_Latin1_General_CP1_CI_AS,那么获得的就是对西欧字符集的支持,它不区分大小写(case-insensitive),对重音敏感(accent-sensitive)。执行排序操作时,不区分大小写,则会将e和E看成是相同的字符;区分重音,则会将E、È、É、Ê、Ë看成不同的字符。
中文版SQL Server的默认排序规则是Chinese_PRC_CI_AS,表示针对大陆简体字Unicode排序,不区分大小写,但对重音敏感。
二、安装SQL Server时指定排序规则
服务器(实例)的排序规则,在安装SQL Server时就需要指定。在安装时,将指定所有数据库、表和列使用的一个默认排序规则。在安装完成后,可以在每个级别上覆盖默认的排序规则,将在后续内容中详细讲解。
三、查看服务器(实例)的排序规则
可以通过SSMS查看当前服务器(实例)的排序规则。
实例的排序规则很重要。首先,它定义了字符集,这对char、varchar数据类型的列尤其重要,不然数据都成了问号。其次,临时表排序时使用了tempdb的排序规则(即实例的排序规则),如果发生冲突,会报错。
安装SQL Server 2005的时候,Chinese_PRC_CI_AS是这样选择的
从截图中可以看出:“执行排序操作时,不区分大小写,则会将e和E看成是相同的字符;区分重音,则会将E、È、É、Ê、Ë看成不同的字符。”对于简体中文字符排序,一般为拼音排序;对于繁体中文,一般按笔划排序。貌似德文、法文可以对重音敏感。
转载文章地址:http://bbs.51cto.com/thread-1075769-1.html