我需要选择哪种校对? SQL Server 2008
我在stackoverflow.com上找到了关于这个问题的一篇很好的相关文章: How to choose collation of SQL Server database
所以如果我理解得很好(参见上面的链接):
整理属性/参与
我需要创建一个数据库并存储土耳其语和英语,我会选择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
?
有人可以建议吗?我错了吗?
答案 0 :(得分:6)
如果您的数据模型允许您将数据分成特定于语言的列,则可以使用COLLATE子句为每列显式设置排序规则。
您还可以将COLLATE子句应用于SELECT语句(例如,您将所有语言数据保存在同一位置,并且只按SELECT中的语言进行过滤)。
据我所知,土耳其语(排序顺序)不包含在Latin1中。
答案 1 :(得分:0)
整理是指一组确定数据如何排序和比较的规则。字符数据使用定义正确字符序列的规则进行排序,并带有用于指定区分大小写,重音符号,假名字符类型和字符宽度的选项。
区分大小写
如果以相同方式对待 A 和 a , B 和 b 等,不区分大小写。由于计算机使用 ASCII码区分输入,因此计算机对待 A 和 a 的方式有所不同。
口音敏感度
如果以相同方式对待 a 和á, o 和ó,则它是重音-不敏感。由于计算机使用ASCII码区分输入,因此计算机对 a 和á的处理不同。像 a 的ASCII值是 97 ,而á的 225 。
假名灵敏度
当日语假名字符平假名和片假名被区别对待时,称为假名敏感。
宽度灵敏度
如果对单字节字符(半角)和表示为双字节字符(全角)的相同字符进行区别对待,则它对宽度敏感。
更多信息here。我希望这个答案有帮助。