SQL Server Latin Accent Sensitive排序规则

问题描述 投票:0回答:1

我有以下查询

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 

它产生以下结果:

enter image description here

有人能告诉我为什么“Ćevapi”在这种情况下没有得分为500分吗?根据整理它应该?

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

sql sql-server full-text-search collation
1个回答
2
投票

您将字符串文字转换为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%'
© www.soinside.com 2019 - 2024. All rights reserved.