6

我正在安装一个新的 SQL Server 2008 服务器,并且在获取有关不同排序规则的任何可用信息时遇到了一些问题。我搜索了 SQL Server BOL 并用谷歌搜索了答案,但似乎无法找到任何可用的信息。

  1. "Finnish_Swedish_100"Windows 排序规则和有什么区别"Finnish_Swedish"

    我想"_100"-version 是 SQL Server 2008 中的更新排序规则,但如果是这种情况,与旧版本相比发生了什么变化?

  2. "Accent-sensitive"启用通常是一件好事吗?我知道这取决于任务和所有这些,但是有什么众所周知的利弊需要考虑吗?

  3. 和参数"Binary""Binary-code point"在什么情况下应该启用这些?

4

7 回答 7

5

_100表示​​SQL Server 2008新增的排序规则,_90是2005的,没有后缀的是2000。不知道有什么区别,也找不到文档。除非您正在对另一个不同版本的 SQL 服务器进行链接服务器查询,否则我很想使用 _100 的。抱歉,我无法帮助解决差异。

于 2009-02-10T08:56:46.517 回答
4

The letters ÅÄÖ/åäö do not mix up with A and O just by setting the collation to AI (Accent Insensitive). That is however true for â and other "combinations" not part of the Swedish alphabet as individual letters. â will mix or not mix depending of the setting in question.

Since I have a lot of old databases I still need to communicate with, also using linked servers, I chose FINNISH _SWEDISH _CI _AS now that I'm installing SQL2008. That was the default setting for FINNISH _SWEDISH when the Windows collations first appeared in SQL Server.

于 2009-09-23T10:12:35.347 回答
3

使用下面的查询自己尝试一下。

如您所见,å、ä 等不计为重音字符,并且在使用芬兰语/瑞典语排序规则时根据瑞典语字母进行排序。

AS但是,仅当您使用排序规则时才会考虑重音符号。对于AI排序规则,它们的顺序没有改变,就好像根本没有重音一样。

CREATE TABLE #Test (
    Number int identity,
    Value nvarchar(20) NOT NULL
);
GO

INSERT INTO #Test VALUES ('àá');
INSERT INTO #Test VALUES ('áa');
INSERT INTO #Test VALUES ('aa');
INSERT INTO #Test VALUES ('aà');

INSERT INTO #Test VALUES ('áb');
INSERT INTO #Test VALUES ('ab');

-- w is considered an accented version of v
INSERT INTO #Test VALUES ('wa');
INSERT INTO #Test VALUES ('va');
INSERT INTO #Test VALUES ('zz');
INSERT INTO #Test VALUES ('åä');
GO

SELECT Number, Value FROM #Test ORDER BY Value COLLATE Finnish_Swedish_CI_AS;
SELECT Number, Value FROM #Test ORDER BY Value COLLATE Finnish_Swedish_CI_AI;
GO

DROP TABLE #Test;
GO
于 2009-09-23T10:36:35.017 回答
2

要解决问题 3(来自MSDN的信息;措辞他们的,格式我的):

二进制 ( _BIN):

  • 根据为每个字符定义的位模式对 SQL Server 表中的数据进行排序和比较。
  • 二进制排序顺序区分大小写和重音。
  • 二进制也是最快的排序顺序。
  • 如果未选择此选项,SQL Server 将遵循相关语言或字母的字典中定义的排序和比较规则。

二进制代码点 ( _BIN2):

  • 对于 Unicode 数据:根据 Unicode 代码点对 SQL Server 表中的数据进行排序和比较。
  • 对于非 Unicode 数据:将使用与二进制排序相同的比较。

使用二进制代码点排序顺序的优点是在比较排序的 SQL Server 数据的应用程序中不需要数据重新排序。因此,二进制代码点排序顺序提供了更简单的应用程序开发和可能的性能提升。

有关详细信息,请参阅使用 BIN 和 BIN2 排序规则的指南

于 2009-02-10T09:11:09.540 回答
0

关于问题 2 和 3

如果您正在接受用户数据,我建议将口音敏感度关闭,如果您有干净、经过消毒的数据,则建议将其打开。我自己不是芬兰人,我不知道有多少单词会根据其中的 ó õ 或 ö 而有所不同。但是如果有用户输入数据,你可以确定他们在使用上不会保持一致,并且你希望能够匹配他们。如果您从一个数据集中收集数据,并且您知道其内容和一致性,那么您将需要打开 Accent Sensitivity ON,因为您知道这些差异是有目的的。

在考虑问题 3 时,同样的问题也适用。(我主要从 Tomalak 提供的链接中得到这个)如果数据区分大小写和重音,那么您需要 _BIN,因为它会更快地排序。如果数据不规则,并且不区分大小写/重音,那么您将需要 _BIN2,因为它是为 Unicode 数据设计的。

于 2009-02-10T14:02:43.777 回答
0

解决您的问题 1. 启用芬兰语-瑞典语对口音敏感是一件好事。否则你的 "å"s 和 "ä"s 将被排序为 "a"s 和 "ö"s 作为 "o"s。(假设您将使用这些国际字符)。

更多信息:http: //msdn.microsoft.com/en-us/library/ms143515.aspx(讨论二进制代码点和重音敏感性)

于 2009-02-10T08:38:12.677 回答
0

要解决问题 2:

是的,如果给定语言需要重音语法。

于 2009-02-10T08:44:32.770 回答