Это сложно. Oracle и SQL Сервер имеет разные правила сортировки. Oracle по умолчанию выполняет двоичную сортировку , которая основана на значениях чисел c символов, определенных схемой кодирования символов (это самый быстрый метод).
Символ подчеркивания (_
) имеет код ASCII 95, а AZ - от 65 до 90. Отсюда и результаты, которые вы видите.
Одним из способов получения ожидаемых результатов является выполнение linguisti c sort : с этой настройкой символы сортируются независимо от их числовых значений c в схеме кодирования символов .
Я поиграл с параметрами, и вот решение, которое сортируется, как и ожидалось:
select * from test1 order by nlssort(prod_name, 'nls_sort = punctuation')
Демонстрация на DB Fiddle
Обратите внимание, что это будет медленнее, чем двоичная сортировка.