NLSSORT Oracle в Snowflake
Я пытаюсь преобразовать следующий код из Oracle в Snowflake:
order by nlssort(name, 'NLS_SORT=BINARY')
Я знаю, что NLSSORT не является функцией Snowflake, но есть ли что-нибудь, что я могу использовать в качестве альтернативы?
1 ответ
Он уже должен быть очень похож на сортировку по умолчанию Snowflake - вам просто нужно учитывать кодировку вашей базы данных в Oracle (select * from nls_database_parameters where parameter='NLS_CHARACTERSET'
) и посмотрите, имеет ли он другой двоичный порядок, чем ASCII/UTF-8.
Если значение BINARY, то сравнение основано непосредственно на байтовых значениях в двоичной кодировке сравниваемых символьных значений.
Все данные сортируются в соответствии с числовым значением байта каждого символа в таблице ASCII. Поддерживается кодировка UTF-8.
Итак, я думаю, вы должны просто сделать:
order by name
Это как-то странно, что кто-то написал бы этот код Oracle для начала, поскольку BINARY - это порядок сортировки по умолчанию (сопоставление). Но если ваша база данных Oracle использует многоязычную сортировку (что не часто) для других запросов, я не думаю, что вы сможете легко эмулировать это в Snowflake.