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

时间:2012-04-27 13:46:09

标签: 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。在新系统中,用户将具有重命名那些人的功能,例如,将“穆勒”改名为“穆勒”。要查找需要重命名的实体,我需要搜索包含例如“法斯”。但是现在查询也返回“Faß”,这不是我想要的。我仍然需要/想要不区分大小写,因为用户应该能够搜索“fass”并仍然获得“Fass”。

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

1 个答案:

答案 0 :(得分:1)

排序规则SQL_Latin1_General_CP1_CI_AS认为“ss”与“ß”不同,因此它可能适合您。这是一种遗留的排序规则,因此可能会与操作系统和应用程序平台产生不兼容的问题。它可能还有其他我不知道的怪癖。

几年前,我为类似的问题草拟了一个kludgy解决方法,你可以看一下它here。 (单击“变通方法(1)”选项卡。)在这种情况下的问题是关键字列中的唯一性,而不是字符串比较结果,因此要在您的情况下应用它(并比较两列以进行单个字符串比较)可能是不可行的。