У меня есть простая таблица:
CREATE TABLE [dbo].[Users]([Surname] [nvarchar](50) COLLATE Latin1_General_CI_AI NULL) ON [PRIMARY]
с двумя рядами:
Paweł
Pawel
Выдача следующего оператора выбора:
SELECT *, CAST(Surname AS VARBINARY(30)) AS Expr1, CAST(N'Paweł' AS VARBINARY(30)) AS Expr1
FROM Users WHERE Surname = N'Paweł'
дает следующий результат:
Paweł 0x50006100770065004201 0x50006100770065004201
Pawel 0x50006100770065006C00 0x50006100770065004201
Возвращается строка со значением 'Pawel', даже если она не равна 'Paweł' (двоичные столбцы показывают это).
Есть идеи, что происходит, почему SQL-сервер считает Pawel = Paweł в этом случае?
Спасибо, Павел