SQL 服务器拉丁口音敏感排序规则

SQL Server Latin Accent Sensitive collation

我有以下查询

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

您正在将字符串文字转换为 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%'