我有以下查询
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分吗?根据整理它应该?
这里的重点是在这种情况下优先考虑ć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%'