需要不区分大小写的排序规则,其中 ss != ß

And*_*ker 5 sql-server collation

对于在 SQL Server Express 2012 上运行的数据库中的特定列,我需要在比较字符串时将 ss 和 ß 视为不同的排序规则。此外,ä 和 ae、ö 和 oe 以及 ü 和 ue 应该分别被认为是不同的。Latin1_General_CI_AS 提供了后者,但不区分 ss 和 ß。也就是说,WHERE ThatColumn = 'Fass'会同时产生FassFaß

我会简单地坚持 BIN/BIN2,但我需要不区分大小写。如果没有其他工作,我将不得不使用 Latin1_General_BIN/Latin1_General_BIN2 并确保自己的所有内容都是大写或小写。这将意味着更多的工作,因为我还需要能够检索具有适当大小写的版本。

但是,如果有符合我需要的整理,请告诉我。提前致谢!

更新:有关要求的更多信息:数据库包含来自仅支持 ASCII 字符的旧系统的个人姓名。也就是说,像 Müller 和 Faß 这样的名字被存储为 Mueller 和 Fass。在新系统中,用户将具有重命名这些人的功能,例如将“Mueller”重命名为“Müller”。要找到需要重命名的实体,我需要搜索包含例如“Fass”的行。但是现在查询也返回“Faß”,这不是我想要的。我仍然需要/想要不区分大小写,因为用户应该能够搜索“fass”并仍然得到“Fass”。

该系统还有更多内容,但我可以肯定地说,我需要区分 ss 和 ß、ä 和 ae 等。

Ste*_*ass 1

排序规则 SQL_Latin1_General_CP1_CI_AS 认为 \'ss\' 与 \'\xc3\x9f\' 不同,因此它可能适合您。它是旧版排序规则,因此可能会导致与操作系统和应用程序平台不兼容。它可能还有其他我不知道的怪癖。

\n\n

几年前,我针对类似问题概述了一个笨拙的解决方法,您可以在此处查看。(单击“解决方法 (1)”选项卡。)这种情况下的问题是关于键列中的唯一性,而不是字符串比较结果,因此将其应用于您的情况(并比较两列以进行单个字符串比较)可能不可行。

\n