【问题标题】:SQL Server collation does not sort the way I wantSQL Server 排序规则没有按照我想要的方式排序
【发布时间】:2011-12-09 02:54:38
【问题描述】:

我正在与一小部分欧洲公司合作,这些公司应该按特定顺序排序。我尝试过的所有 SQL 排序规则都不能完全完成这项工作......

Finnish_Swedish_CI_AS
正确排序 Å、Ä 和 Ö,但认为 Y 和 Ü 相同。

Latin1_General_CI_AS
正确排序 Y 和 Ü,但认为 Å 和 A 相同,依此类推。

我想要的是一个排序如下的列表:

  • AB 公司,Borlänge
  • 公司 AB,斯德哥尔摩
  • 公司 AB,Älvsjö(与瑞典语正确,但在拉丁语中排序为“...Alvsjo”)
  • Company OÜ, Otepää(与拉丁语正确,但在瑞典语中排序为“Company OY...”)
  • 公司 OY,米凯利
  • OY 公司,萨翁林纳

似乎没有任何特定的排序规则可以解决问题。我可以以某种方式强制特定列的特定排序/排序吗?还有其他提示可以解决这个问题吗?

【问题讨论】:

  • 是您想要的排序标准吗?也就是说,他们会以这种方式出现在电话簿中吗?
  • 至少我是这么想的,但我不确定情况是否如此。我对 Accent Sensitive 的想法也是,它将包括所有类型的口音,但显然不是。

标签: sql-server sorting collation


【解决方案1】:

每个操作只能使用一个排序规则。如果要混合文化,则必须存储名称的标准化版本以用于排序。

Company OÜ, Otepää 的标准化版本将是 Company OU, Otepää,因此您可以将 Ü 视为不是 Y

【讨论】:

  • 基本上我希望通过管理数据库来解决这个问题,因为我无法访问应用程序代码。一个直接的解决方案是仅使用公司 OU 进行展示。
  • @lovlka:您应该在对它们进行排序时动态创建归一化值,但这当然不是很有效。
猜你喜欢
  • 2011-05-05
  • 2012-06-08
  • 2010-10-07
  • 2020-12-16
  • 2012-01-21
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多