【发布时间】:2011-10-15 20:04:08
【问题描述】:
我需要选择哪种排序规则? SQL Server 2008
我在 stackoverflow.com 上找到了一篇关于这个问题的不错的相关帖子: How to choose collation of SQL Server database
所以如果我理解得很好(参考上面的链接):
- collation 用于排序和比较):
- NVARCHAR 用于存储数据。
归类属性/参数
- CI 指定不区分大小写
- CS 指定区分大小写
- AI 指定不区分重音
- AS 指定区分重音
我需要创建一个数据库来存储土耳其语和英语,我会选择 CI 和 AI。我不想要区分大小写和不区分重音,所以这很容易。我认为这对英语来说很清楚,但土耳其语有一些特殊字符,如 üçö 等。
问题:
由于排序规则与存储数据无关,我将使用NVARCHAR,为什么我应该选择排序规则Turkish_100_CI_AI,我也可以使用Latin1_General_100_CI_AI,这也是我的默认设置我的 SQL 服务器。两者都是拉丁文字。
在同一个数据库中存储 ENGLISH 和 FRENCH 是同一个问题...为什么要使用 French_100_CI_AI 而不是 Latin1_General_100_CI_AI?
有人可以建议吗?我错了吗?
【问题讨论】:
-
你错了,Latin1 字符集包含了这些语言的所有字符。它没有。 Latin1 排序规则对字符相等性和排序做出与特定语言排序规则相同的决定。
-
@Dan:请您澄清一下。好的,我只是一个拉丁字符集的网站。一些土耳其字符不存在......但它适用于法语......所以如果那里有所有法语字符,我可以使用法语 - 英语......不是吗? "msdn.microsoft.com/en-us/library/ms537495(v=vs.85).aspx"... -2- 为什么Latin 1 collation 不做决定?
-
如果它不明显(它没有在您的问题中突出显示,也没有链接到),排序和比较会影响
UNIQUE约束的定义 - 所以如果您决定整理CI_AI,您不能将两个值存储在仅因大小写(或重音)而异的唯一列中 -
抱歉,不清楚。你的意思是:在“名称”或“地址”栏中 - 当它是 Latin1_100_CI_AI 时,我可以在这里存储法语/英语吗?法语字符在 Latin1 中。我可以接受这个说法。如果字符在 Latin1 集中(对于任何语言)..我可以使用 Latin1。 -> 这是正确的吗?
标签: sql-server sql-server-2005