#sql #oracle #snowflake-cloud-data-platform #snowsql #nls-sort
#sql #Oracle #snowflake-облачная платформа для обработки данных #snowsql #nls-сортировка
Вопрос:
Я пытаюсь преобразовать следующий код из 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.
Если значение является ДВОИЧНЫМ, то сравнение основано непосредственно на байтовых значениях в двоичной кодировке сравниваемых символьных значений.
Все данные сортируются в соответствии с числовым значением байта каждого символа в таблице ASCII. Поддерживается кодировка UTF-8.
Поэтому я думаю, что вы должны быть в состоянии просто сделать:
order by name
Довольно странно, что кто-то написал этот код Oracle для начала, поскольку BINARY — это порядок сортировки (сортировки) по умолчанию. Но если ваша база данных Oracle использует многоязычную сортировку (что не часто) для других запросов, я не думаю, что вы сможете легко эмулировать это в Snowflake.