【问题标题】:why does SQL server consider SS as an Umlaut-S (ß)?为什么 SQL Server 将 SS 视为 Umlaut-S (ß)?
【发布时间】:2019-02-12 11:49:01
【问题描述】:

当我运行以下查询时:

select charindex('ß','COMMISSIONING')

它返回一个 6。

我特别选择 ß 作为函数,因为我认为它不太可能出现在我的任何数据中。这在几周内工作得非常好,但现在突然之间它检测到没有 ß 的地方,因此搞砸了我的功能。

谁能告诉我这是什么原因造成的?

我使用的是 SQL Server 2016

【问题讨论】:

  • ß 不是“beta 符号”,它是一个“变音符号 S”,至少在德语中,大写的 ß 写成 SS(因为没有大写版本的ß) - 但这应该取决于您的服务器使用的语言环境/编码。
  • 我的 SERVERPROPERTY('Collat​​ion') 是 Latin1_General_CI_AS
  • beta 符号是 β 变音符号 S 是 ß
  • 我相信它是“scharfes S”,而不是变音符号。

标签: sql sql-server syntax


【解决方案1】:

因为,正如 cmets 中所讨论的,SS 是“大写”ß。如果您不希望字符匹配,则需要您的排序规则区分大小写。对于下面的情况,CHARINDEX 两个表达式的返回值都是 0

SELECT C, charindex('ß',V.C)
FROM (VALUES('COMMISSIONING' COLLATE Latin1_General_CS_AS)) V(C);

SELECT C, charindex('ß',V.C)
FROM (VALUES('COMMISSIONING' COLLATE Latin1_General_CS_AI)) V(C);

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 2010-10-20
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多