2016-11-07 11 views
1

Уже существует вопрос и решение по нечувствительным к акценту поискам в stackoverflow, но ни одна из них не работает для кодовой страницы 1250 (языки Центральной Европы и Восточной Европы).Как выполнить сравнение без акцентов в SQL Server для кодовой страницы 1250

How do I perform an accent insensitive compare (e with è, é, ê and ë) in SQL Server?

LINQ Where Ignore Accentuation and Case

Ignoring accents in SQL Server using LINQ to SQL

поиск Изменить, чтобы сделать его Accent INSENSITIVE в SQL Server

Questions about accent insensitivity in SQL Server (Latin1_General_CI_AS)

Проблема заключается в том, что акцент нечувствительны сверка являются bidned к некоторым конкретным кодовых страниц и Я пропускаю акцентирующую нечувствительность сортировку для кодовой страницы 1250 в MSDN documentation.

Мне нужно изменить сортировку колонки до make Entity Framework working in accent insensitive way.

Например, если я изменяю сопоставление с SQL_LATIN1_GENERAL_CP1_CI_AI, c с accute выбирается как c без accute (U + 0107), потому что неправильная кодовая страница.

Как это решить?

ответ

2
SELECT * 
FROM sys.fn_helpcollations() 
WHERE COLLATIONPROPERTY(name, 'CodePage') = 1250 
     AND description LIKE '%accent-insensitive%'; 

Возвращает 264 результата на выбор.

Комплектование первый

SELECT N'è' COLLATE Albanian_CI_AI 
UNION 
SELECT N'é' 
UNION 
SELECT N'ê' 
UNION 
SELECT N'ë' 

возвращает одну строку по желанию (показать все сравнению равны)

0

ОК, это кажется, что ссылка MSDN документация для SQL Server 2008 Я использую SQL Server 2014 , но я не смог найти какую-либо документацию для сортировки 2014.

но решение перечислить сопоставления с сервера для моей страницы кода:

SELECT name, COLLATIONPROPERTY(name, 'CodePage') AS CodePage 
FROM fn_helpcollations() 
where COLLATIONPROPERTY(name, 'CodePage') = 1250 
ORDER BY name; 

И я вижу, что есть недокументированная сортировка Czech_100_CI_AI , которая работает для меня. Эврика!