啊,但它是可能的,因为是一个自然地处理这个的排序规则(实际上有几个,但都在同一个“家族”中):Hungarian_Technical_ *(嗯,减去区分大小写 (CS) 和二进制 (BIN / BIN2) 的变体)。当然,我仍然不确定这是一个PK的好选择,但没有理由不能是UNIQUE INDEX。
SELECT tmp.*,
IIF(tmp.[First] = tmp.[Second] COLLATE Hungarian_Technical_CI_AI,
N'Equal',
N'NOT EQUAL') AS [Result]
FROM (
SELECT N'weiß', N'Weiß', N'Equal'
UNION ALL
SELECT N'weiss', N'Weiss', N'Equal'
UNION ALL
SELECT N'weiß', N'weiss', N'NOT Equal'
UNION ALL
SELECT N'Weiß', N'Weiss', N'NOT Equal'
UNION ALL
SELECT N'weiß', N'Weiss', N'NOT Equal'
) tmp ([First], [Second], [Ideal]);
结果:
First Second Ideal Result
weiß Weiß Equal Equal
weiss Weiss Equal Equal
weiß weiss NOT Equal NOT EQUAL
Weiß Weiss NOT Equal NOT EQUAL
weiß Weiss NOT Equal NOT EQUAL
总共有 24 个排序规则将以这种方式工作。您可以通过以下方式找到它们:
SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;
他们是:
Hungarian_Technical_100_CI_AI Hungarian_Technical_100_CI_AI_KS
Hungarian_Technical_100_CI_AI_KS_SC
Hungarian_Technical_100_CI_AI_KS_WS
匈牙利语_Technical_100_CI_AI_KS_WS_SC
Hungarian_Technical_100_CI_AI_SC Hungarian_Technical_100_CI_AI_WS
匈牙利语_Technical_100_CI_AI_WS_SC 匈牙利语_Technical_100_CI_AS
匈牙利语_Technical_100_CI_AS_KS 匈牙利语_Technical_100_CI_AS_KS_SC
Hungarian_Technical_100_CI_AS_KS_WS
匈牙利语_Technical_100_CI_AS_KS_WS_SC
Hungarian_Technical_100_CI_AS_SC Hungarian_Technical_100_CI_AS_WS
匈牙利语_技术_100_CI_AS_WS_SC 匈牙利语_技术_CI_AI
匈牙利语_技术_CI_AI_KS 匈牙利语_技术_CI_AI_KS_WS
匈牙利语_技术_CI_AI_WS 匈牙利语_技术_CI_AS
匈牙利语_技术_CI_AS_KS 匈牙利语_技术_CI_AS_KS_WS
匈牙利语_技术_CI_AS_WS
如果版本 100 排序规则可用(意味着:您使用的是 SQL Server 2008 或更高版本),则使用这些排序规则,而不是名称中没有版本号的排序规则。
编辑:
我发现了一些可能感兴趣的关于“匈牙利技术”排序规则的附加信息:
MySQL: Hungarian collation -- 这是一些 MySQL 开发人员试图弄清楚如何实现排序规则的细节的 listserv 讨论的存档。显然它有一些复杂的规则,至少部分是由于需要将多个字符等同为一个字符进行排序(查找“3.特殊的二合字母/三合字母规则”部分)。这可能会导致一些意外行为。该部分中注明了特定的字母组合,因此至少可以更轻松地设置测试用例来帮助确定排序规则是否使用此排序规则无效。
-
Why are there so many(106) Hungarian collations? -- 这是关于 social.msdn 的讨论,其中包含一些有趣的信息。 Erland Sommarsko 在其中有一条评论,他在其中指出:
我运行了一个疯狂的性能测试来测试 SQL 2008 中的所有排序规则。我有一个空闲的服务器可用,测试运行了 8-9 天。我记得 Hungarian_Technical 是最慢的。
鉴于 MySQL 开发人员对复杂规则的讨论,这些测试结果似乎并不那么令人惊讶。
因此,在决定是否采用简单的方法将 NVARCHAR 字段设置为这些 Hungarian Technical 排序规则之一,或者采用 @GarethD 对计算列的建议时,可能应该将这两项考虑在内。
有关使用字符串和排序规则的更多信息,请访问:Collations Info