В SQL Server 2008 наблюдается странное поведение при упорядочении столбцов NVARCHAR; Вот несколько примеров быстрого использования для демонстрации:
Случай 1: ЗАКАЗАТЬ на значения VARCHAR:
SELECT t.Name
FROM
(
SELECT CAST('A' AS VARCHAR(500)) As Name
UNION SELECT CAST('-A' AS VARCHAR(500)) AS NAME
) As t
ORDER BY t.Name ASC
Который производит (мой желаемый) результат:
-A
A
(тот, у которого начинается тире, отображается первым)
Сравните это с ORDER на значениях NVARCHAR:
SELECT t.Name
FROM
(
SELECT CAST('A' AS NVARCHAR(500)) As Name
UNION SELECT CAST('-A' AS NVARCHAR(500)) AS NAME
) As t
ORDER BY t.Name ASC
Который производит этот вывод:
A
-
Предполагается, что я хочу отсортировать по полям NVARCHAR (я не могу изменить дизайн БД), используя стандартное предложение ORDER BY (я использую linq2nhib, что не позволяет мне выполнять какое-либо приведение здесь) - как мне получить сортировку работать желаемым образом (элемент с первым не буквенно-цифровым значением отображается первым)?
Я надеюсь, что для этого есть какая-то настройка сопоставления на уровне базы данных / сервера ... есть идеи?