当我执行SQL时ae
和æ
被解释为相同(丹麦语排序规则):
select * from directories where path='test.dk\kkl$\Faelles'
无论如何都要做一个处理æ和ae作为唯一的查询?
答案 0 :(得分:1)
我在这里使用了@Heinzi的代码(他使用了整理) 我只是想展示如何在WHERE子句和ORDER BY子句中使用它与样本
起初我虽然你需要NVARCHAR()数据类型,但我看到VARCHAR()也支持丹麦字符没有问题(至少你的样本)
declare @code nvarchar(100) = 'æ'
--declare @code nvarchar(100) = 'ae'
select *
from Danish
where code = @code COLLATE Danish_Greenlandic_100_CI_AI
--order by code COLLATE Danish_Greenlandic_100_CI_AI desc
因此,您需要在WHERE子句或ORDER BY中为每个条件或组按字段设置Collation with COLLATE子句,
在@Thomas的评论之后,我添加了以下查询。 它将为'æ'和'ae'
生成单独的行SELECT
path COLLATE Danish_Greenlandic_100_CI_AI,
migrate, ismigrationroot,
COUNT(*) as CNT
FROM directories
GROUP BY
path COLLATE Danish_Greenlandic_100_CI_AI,
migrate,
ismigrationroot
HAVING
COUNT(*) > 1 and
ismigrationroot is not null