Я пытаюсь написать запрос Oracle, который сортирует результаты так же, как MS SQL Server.Я играю с функцией 'NLSSORT' и ее параметрами, но я не могу получить те же результаты, что и в MS SQL Server.
Контекст является общимсистема сбора данных, которая поддерживает Oracle и MS SQL Server.Это довольно старая система, которая все еще находится в стадии обслуживания и развития.Никакой объектной структуры или каких-либо недавних подходов для обработки взаимодействия с базой данных.
С помощью простого заказа на MS SQL Server я получаю такой результат:
_TEST
04-00031-IPE
04-00044-OG
0A-A
A0-A
SAZ2217
Тот же запрос в Oracle возвращает это:
04-00031-IPE
04-00044-OG
0A-A
A0-A
SAZ2217
_TEST
Я пробовал множество комбинаций параметров NLSSORT без какого-либо успеха.
[править]
Используя значение параметра NLS_SORT 'PUNCTUATION', я получаю результаты, очень близкие к сортировке MS SQL, но все еще есть различия с подстроками, которые содержат последовательности числовых символов.Вот пример результата запроса:
Oracle
0031-CASTOR-BLOC1-AV-AP
0031-CASTOR-BLOC1-AV-SP
0031-CASTOR-BLOC1-SV-AP
0031-CASTOR-BLOC1-SV-SP
0031-CASTOR-BLOC10-DV-AP
0031-CASTOR-BLOC10-DV-SP
0031-CASTOR-BLOC2-DV-AP
MS SQL
0031-CASTOR-BLOC10-DV-AP
0031-CASTOR-BLOC10-DV-SP
0031-CASTOR-BLOC1-AV-AP
0031-CASTOR-BLOC1-AV-SP
0031-CASTOR-BLOC1-SV-AP
0031-CASTOR-BLOC1-SV-SP
0031-CASTOR-BLOC2-DV-AP
Спасибо за вашепомощь!