eth*_*hem 18 sql-server sql-server-2005
我需要选择哪种校对?SQL Server 2008
我在stackoverflow.com上找到了关于这个问题的一篇很好的相关文章: 如何选择SQL Server数据库的整理
所以,如果我理解得很好(参见上面的链接):
整理属性/ parms
我需要创建一个数据库并存储土耳其语和英语,我会选择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中.
排序规则是指确定数据如何排序和比较的一组规则。字符数据使用定义正确字符序列的规则进行排序,并带有用于指定区分大小写、重音符号、假名字符类型和字符宽度的选项。
\n\n区分大小写
\n\n如果A和a、B和b等以相同的方式处理,则不区分大小写。计算机对A和a 的处理方式不同,因为它使用ASCII 代码来区分输入。
\n\n重音敏感度
\n\n如果a和\xc3\xa1、o和\xc3\xb3以相同的方式处理,则它不区分重音。计算机对a和\xc3\xa1的处理方式不同,因为它使用 ASCII 代码来区分输入。就像a的 ASCII 值是97和\xc3\xa1是225。
\n\n假名敏感度
\n\n当日语假名字符平假名和片假名被区别对待时,称为假名敏感。
\n\n宽度灵敏度
\n\n当单字节字符(半角)和表示为双字节字符(全角)的相同字符被不同地处理时,则它是宽度敏感的。
\n\n更多信息可以在这里找到。我希望这个答案有帮助。
\n