SQL Server数据库使用什么排序规则?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server数据库使用什么排序规则?相关的知识,希望对你有一定的参考价值。

我需要选择哪种校对? SQL Server 2008

我在stackoverflow.com上找到了关于这个问题的一篇很好的相关文章:How to choose collation of SQL Server database

所以,如果我理解得很好(参见上面的链接):

  • 整理用于排序和比较):
  • NVARCHAR用于存储数据。

整理属性/ parms

  • CI指定不区分大小写
  • CS指定区分大小写
  • AI指定不区分重音
  • AS指定区分重音

我需要创建一个数据库并存储土耳其语和英语,我会选择CI和AI。我不想要区分大小写且没有重音敏感,所以很容易。我认为英语很明显,但土耳其语有一些特殊的字符,如üçö等。

题:

由于整理与存储数据无关,我将使用NVARCHAR,为什么我应该选择整理Turkish_100_CI_AI,我也可以使用Latin1_General_100_CI_AI,这也是我在SQL Server上的默认设置。两者都是拉丁文。

将ENGLISH和FRENCH存储在同一个数据库中也是同样的问题...为什么我应该使用French_100_CI_AI而不是Latin1_General_100_CI_AI

有人可以建议吗?我错了吗?

答案

如果数据模型允许您将数据分成特定于语言的列,则可以使用COLLATE子句为每列显式设置排序规则。

您还可以将COLLATE子句应用于SELECT语句(例如,您将所有语言数据保存在同一位置,并且仅按SELECT中的语言进行过滤)。

据我所知,土耳其语(排序顺序)不包含在Latin1中。

另一答案

排序规则是指一组确定数据排序和比较方式的规则。使用定义正确字符序列的规则对字符数据进行排序,并使用选项指定区分大小写,重音符号,假名字符类型和字符宽度。

区分大小写

如果以相同的方式处理A和a,B和b等,则它不区分大小写。计算机对待A和a的方式不同,因为它使用ASCII代码来区分输入。

重音敏感度

如果a和á,o和ó以相同的方式处理,则它对重音不敏感。计算机对待a和á的方式不同,因为它使用ASCII代码来区分输入。像a的ASCII值是97,á是225。

假名灵敏度

当日本假名字符平假名和片假名被区别对待时,它被称为假名敏感。

宽度灵敏度

当单字节字符(半宽)和相同字符表示为双字节字符(全宽)时,处理方式不同,则它是宽度敏感的。

更多信息可以在here找到。我希望这个答案有所帮助。

以上是关于SQL Server数据库使用什么排序规则?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server数据库使用什么排序规则?

sqlserver支持的字符集都有哪些

SQL server中如何更改排序规则

SQL Server 不区分大小写的排序规则

如何修改SQL Server2005排序规则

SQL Server - 将 varchar 转换为另一个排序规则(代码页)以修复字符编码