Да, проблема скорее всего в сопоставлении. Параметры сортировки Latin1_General
не включают правила сортировки и сравнения нелатинских символов.
MSDN утверждает:
Если вам необходимо хранить символьные данные, отражающие несколько языков, вы можете минимизировать проблемы совместимости сопоставления, всегда используя типы данных Unicode nchar, nvarchar и ntext вместо типов данных char, varchar, text. Использование типов данных Unicode устраняет проблемы преобразования кодовой страницы.
Поскольку вы уже выполнили это, вы должны прочитать далее информацию о смешанных средах сопоставления здесь .
Кроме того, я хочу добавить, что просто изменить параметры сортировки непросто, проверьте MSDN для SQL 2000:
При настройке SQL Server 2000 важно использовать правильные параметры сортировки. Вы можете изменить параметры сортировки после запуска программы установки, но вы должны перестроить базы данных и перезагрузить данные. Для этих вариантов рекомендуется разработать стандарт в своей организации. Многие межсерверные действия могут завершиться ошибкой, если параметры сортировки не одинаковы для разных серверов.
Однако можно указать параметры сортировки для каждого столбца:
CREATE TABLE TestTable (
id int,
GreekColCaseInsensitive nvarchar(10) collate greek_ci_as,
LatinColCaseSensitive nvarchar(10) collate latin1_general_cs_as
)
Взгляните на различные двоичные многоязычные сопоставления здесь . В зависимости от используемой вами кодировки вы должны найти ту, которая соответствует вашим целям.
Если вы не можете или не хотите изменить параметры сортировки столбца, вы также можете просто указать параметры сортировки, которые будут использоваться в запросе, например:
SELECT * From TestTable
WHERE GreekColCaseInsensitive = N'test - ۓےۑ'
COLLATE latin1_general_cs_as
Как jfrobishow указал, что использование N перед строкой, которую вы хотите использовать для сравнения, является существенным. Что он делает:
Обозначает, что следующая строка в Unicode (N фактически обозначает набор символов на национальном языке). Это означает, что вы передаете значение NCHAR, NVARCHAR или NTEXT, а не CHAR, VARCHAR или TEXT. См. Статью 2354 для сравнения этих типов данных.
Вы можете найти краткое изложение здесь .