首页 > 解决方案 > 文本上的雪花排序似乎不正确

问题描述

我是雪花的新手,并注意到文本列的排序不符合预期。

举个简单的例子:

select *
    from ( values ('ab'), ('aBc'), ('acd') ) t(col1)
order by col1

预期顺序:ab、aBc、acd

实际顺序:aBc , ab, acd

我错过了什么吗?

谢谢你。

标签: snowflake-cloud-data-platform

解决方案


您可以在 order by 子句中直接使用 COLLATE 规范。

排序规则允许您指定在比较值时要使用的以下配置设置:

  • 语言环境
  • 区分大小写
  • 重音敏感
  • 标点敏感度
  • 首字母偏好
  • 大小写转换
  • 空间修整

以下示例使用英语区域设置(en)和不区分大小写(ci)排序规则:

select *
    from ( values ('ab'), ('aBc'), ('acd'), ('Z') ) t(col1)
   order by collate(col1, 'en-ci');

返回结果:

ab abc acd Z


推荐阅读