Sql server Sql Server 2008-排序规则类型之间的差异
我正在安装新的SQL Server 2008 Server,在获取有关不同排序规则的可用信息时遇到一些问题。我已经搜索了SQLServerBOL和google'ed来寻找答案,但似乎找不到任何有用的信息Sql server Sql Server 2008-排序规则类型之间的差异,sql-server,sql-server-2008,collation,Sql Server,Sql Server 2008,Collation,我正在安装新的SQL Server 2008 Server,在获取有关不同排序规则的可用信息时遇到一些问题。我已经搜索了SQLServerBOL和google'ed来寻找答案,但似乎找不到任何有用的信息 Windows排序规则“Finnish_Swedish_100”与“Finnish_Swedish”之间有什么区别 我假设“\u 100”-版本是SQL Server 2008中更新的排序规则,但如果是这样,与旧版本相比有什么变化 启用“重音敏感”通常是件好事吗?我知道这取决于任务和所有这些,
“\u 100”
-版本是SQL Server 2008中更新的排序规则,但如果是这样,与旧版本相比有什么变化
“重音敏感”
通常是件好事吗?我知道这取决于任务和所有这些,但是有没有什么值得商榷的利弊?
“Binary”
和“Binary code point”
参数,在哪些情况下应启用
回答你的问题1。对芬兰语-瑞典语来说,启用重音敏感是件好事。否则,您的“å”和“ä”将被排序为“a”s,“ö”s将被排序为“o”s。(假设您将使用此类国际字符) 更多信息:(讨论二进制代码点和重音敏感度)解决问题2:
是的,如果给定语言的语法需要重音。SQL Server 2008中新增的排序规则序列为_100,带_90的为2005,不带后缀的为2000。我不知道有什么不同,也找不到任何文档。除非您正在执行与另一个不同版本的SQL server的链接服务器查询,否则我很想使用_100。很抱歉,我无法帮助解决这些差异。为了解决问题3(从措辞中删除的信息;他们的,我的格式): 二进制(
\u BIN
):
- 根据为每个字符定义的位模式对SQL Server表中的数据进行排序和比较李>
- 二进制排序顺序区分大小写,区分重音李>
- 二进制也是最快的排序顺序
- 如果未选择此选项,SQL Server将遵循字典中为关联语言或字母表定义的排序和比较规则
\u BIN2
):
- 对于Unicode数据:基于Unicode代码点对SQL Server表中的数据进行排序和比较
- 对于非Unicode数据:将使用与二进制排序相同的比较
在考虑问题3时,同样的问题也适用。(我主要是从Tomalak提供的链接中得到的)如果数据区分大小写和重音,那么您需要_BIN,因为它会排序更快。如果数据不规则,并且不区分大小写/重音,那么您将需要_BIN2,因为它是为Unicode数据设计的 仅通过将排序规则设置为AI(不区分重音),字母ÄÖ/åäö不会与A和O混淆。然而,对于–和其他不属于瑞典字母表中单个字母的“组合”来说,情况确实如此。–是否混合取决于所讨论的设置
由于我还有很多旧数据库需要与之通信,也需要使用链接的服务器,所以我选择了芬兰语(FINNISH)和瑞典语(SWEDISH)CI,因为我现在正在安装SQL2008。当Windows排序规则第一次出现在SQL Server中时,这是芬兰语-瑞典语的默认设置。使用下面的查询自己尝试一下 如您所见,å、ä等不算作重音字符,在使用芬兰语/瑞典语排序规则时,根据瑞典字母表进行排序 但是,只有将
用作
排序规则时,才会考虑重音。对于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
@Octadrone:因为你可能知道:在瑞典,重音字符的预期排序顺序是什么?“å”是单独排序还是与字母“a”的其他形式混淆?预期的排序顺序是[…]x y zååö。完全不同。然而,“v”和“w”被归类为同一个字母。-1:不正确,在芬兰语/瑞典语的分类中,戒指和元音不被视为重音符号。作为瑞典人,我可以告诉你,字母åäö在我们的语言中非常常用。因此,在大多数情况下,您可能希望能够正确地对它们进行排序。我为我的无知道歉,但是,如果“ö”不可用,您会简单地使用“o”还是完全改变这个词?在大多数情况下,它只会创建一个词,用“而不是o”来表示任何意思。如果这也被用在上下文中,我相信瑞典人理解它的意思不会有问题。不过,用户希望能够在瑞典系统中使用åäö好的,谢谢你的信息。我决定使用“Finnish_Swedish_100_CI_AS”作为排序规则,因为该数据库将与正在开发的新应用程序一起使用。