【问题标题】:NLSSORT Oracle to SnowflakeNLSSORT Oracle 到雪花
【发布时间】:2021-02-22 11:57:55
【问题描述】:

我正在尝试将以下代码从 Oracle 转换为 Snowflake:

order by nlssort(name, 'NLS_SORT=BINARY')

我知道 NLSSORT 不是 Snowflake 中的一个函数,但有什么可以替代的吗?

【问题讨论】:

    标签: sql oracle snowflake-cloud-data-platform snowsql nls-sort


    【解决方案1】:

    它应该已经与 Snowflake 的默认排序非常相似 - 您只需要考虑 Oracle 中的数据库字符集 (select * from nls_database_parameters where parameter='NLS_CHARACTERSET') 并查看它是否具有与 ASCII/UTF-8 不同的二进制顺序。

    Oracle's documentation:

    如果值为BINARY,则直接根据字节进行比较 被比较的字符值的二进制编码中的值。

    Snowflake's documentation:

    所有数据按照每个数字字节值排序 ASCII 表中的字符。支持 UTF-8 编码。

    所以我认为你应该能够做到:

    order by name
    

    有人会从编写 Oracle 代码开始有点奇怪,因为 BINARY 是默认排序顺序(排序规则)。但是,如果您的 Oracle 数据库是 using multilingual collation(这并不常见)用于其他查询,我认为您将无法在 Snowflake 中轻松地模拟它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-24
      • 2021-07-22
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      相关资源
      最近更新 更多