【问题标题】:SQL Server Latin Accent Sensitive collationSQL Server 拉丁重音敏感排序规则
【发布时间】:2019-04-09 15:36:33
【问题描述】:

我有以下问题

select T.[KEY] Id,  T.[RANK]  Score, D.Name,
CASE 
            WHEN D.Name = 'će' THEN 1000        
            WHEN D.Name  COLLATE Latin1_General_CI_AS LIKE 'će%' THEN 500       
            WHEN D.Name  LIKE 'će%' THEN 100        
            ELSE 10 
END MatchType
from containstable(Dishes, (Name), '("će*")', language 0x0, 15) as T
INNER JOIN Dishes D On T.[KEY] = D.DishId
ORDER BY MatchType Desc, Score Desc 

它会产生以下结果:

有人能告诉我为什么“Ćevapi”在这种情况下没有 500 的匹配分数吗?根据 Collat​​ion 应该?

这里的重点是在这种情况下优先考虑će 而不是ce

【问题讨论】:

    标签: sql sql-server full-text-search collation


    【解决方案1】:

    您正在将字符串文字转换为 varchar。

    不好:

    select 1 
    where N'Ćevapi' COLLATE Latin1_General_CI_AS LIKE 'će%'
    

    好:

    select 1 
    where N'Ćevapi' COLLATE Latin1_General_CI_AS LIKE N'će%'
    

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 2017-10-25
      • 2019-03-07
      • 1970-01-01
      • 2013-01-21
      • 2012-11-23
      • 2010-11-04
      • 2011-01-24
      • 2014-02-16
      相关资源
      最近更新 更多