Причина, по которой это происходит, сводится к сопоставлению.Существуют параметры сортировки, которые чувствительны к акценту (что вам нужно в данном случае) и другие, которые нечувствительны к акценту (это то, что вы сейчас настроили).Существуют также регистрозависимые и без учета регистра.
Следующий код дает правильный результат:
create table test (
id int identity(1,1),
value nvarchar(100) collate SQL_Latin1_General_Cp437_CI_AS
)
insert into test values ('casa')
insert into test values ('pantalon')
select value collate SQL_Latin1_General_Cp437_CS_AS from test where value = 'pantalón'
Приведенный ниже код дает неправильный результатрезультат:
drop table test
go
create table test (
id int identity(1,1),
value nvarchar(100) collate SQL_Latin1_General_Cp437_CI_AI
)
insert into test values ('casa')
insert into test values ('pantalon')
select value collate SQL_Latin1_General_Cp437_CS_AS from test where value = 'pantalón'
Ключевым моментом здесь является сопоставление - AI означает нечувствительный к ударению, AS означает чувствительное к ударению.