У меня была такая же проблема, и я решил ее, добавив к тексту в предложении WHERE
"N".
Например, у меня есть таблица «Персона», содержащая чуть более 21 000 имен людей. Человек с фамилией «Krzemiński» был недавно добавлен в базу данных, и имя отображается как нормальное, когда отображается строка (то есть символ «ñ» отображается правильно). Однако ни одно из следующих утверждений не вернуло никаких записей:
SELECT * FROM Person WHERE FamilyName='Krzemiński
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemiń%'
... но оба эти утверждения вернули правильную запись:
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemi%'<br>
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemi%ski'
Когда я выполнил следующее утверждение:
SELECT * FROM Person WHERE FamilyName LIKE '%ń%'
Я получаю все 8900 записей, которые содержат букву "n" (без диакритического знака), но я не получаю запись, которая содержит символ "ń". Я пробовал этот последний запрос со всеми польскими символами (ąćęłńóśźż), и все они, кроме "ó", демонстрируют одинаковое поведение (то есть возвращают все записи с символом, эквивалентным нижнему ASCII). Как ни странно, «-» работает должным образом, возвращая только те записи с «-» в поле FamilyName.
В любом случае, решение состояло в том, чтобы поставить перед критерием поиска «N», чтобы явно объявить его как Unicode.
Таким образом, следующие утверждения:
SELECT * FROM Person WHERE FamilyName LIKE N'%ń%'
SELECT * FROM Person WHERE FamilyName=N'Krzemiński'
... оба возвращают правильный набор записей.
Причина, по которой я был сбит с толку, заключается в том, что у меня МНОГИЕ записи со странными диакритическими знаками, и все они возвращают правильные записи даже без префикса "N". На данный момент единственными символами, которые я обнаружил, требующими явного префикса «N», являются польские символы.