Snowflake cloud data platform 文本上的雪花排序似乎不正确

Snowflake cloud data platform 文本上的雪花排序似乎不正确,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我对snowflake还不熟悉,并注意到文本列上的顺序与预期不符 举个简单的例子: select * from ( values ('ab'), ('aBc'), ('acd') ) t(col1) order by col1 预期订单:ab、aBc、acd 实际订单:aBc、ab、acd 我错过什么了吗 谢谢。根据: 所有数据根据ASCII表中每个字符的数字字节值进行排序。支持UTF-8编码 在这个例子中,B在B之前 这是很奇怪的,顺序没有考虑排序中的字符串长度。 < P>按: 所有

我对snowflake还不熟悉,并注意到文本列上的顺序与预期不符

举个简单的例子:

select *
    from ( values ('ab'), ('aBc'), ('acd') ) t(col1)
order by col1
预期订单:ab、aBc、acd

实际订单:aBc、ab、acd

我错过什么了吗

谢谢。

根据:

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

在这个例子中,B在B之前

这是很奇怪的,顺序没有考虑排序中的字符串长度。

< P>按:

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

在这个例子中,B在B之前


<>这很奇怪,顺序没有考虑排序中的字符串长度。

这也会在A之前排序Z,因为它是ASCII/Unicode顺序中的第一个。您可以通过一个更高的功能进行订购:

select *
    from ( values ('ab'), ('aBc'), ('acd'), ('Z') ) t(col1)
order by col1
要在不区分大小写的情况下进行排序,可以使用上限或下限功能

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

这也会将Z排序在a之前,因为它是ASCII/Unicode顺序中的第一个。您可以通过一个更高的功能进行订购:

select *
    from ( values ('ab'), ('aBc'), ('acd'), ('Z') ) t(col1)
order by col1
要在不区分大小写的情况下进行排序,可以使用上限或下限功能

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

您可以在ORDERBY子句中直接使用COLLATE规范

通过collate,可以指定在比较值时要使用的以下配置设置:

场所 区分大小写 重音敏感度 标点敏感度 首字母优先 案例转换 空间修剪 以下示例使用英语Localeen和不区分大小写的ECI排序规则:

select *
    from ( values ('ab'), ('aBc'), ('acd'), ('Z') ) t(col1)
   order by collate(col1, 'en-ci');
返回的结果:

ab aBc acd
Z

您可以在ORDERBY子句中直接使用COLLATE规范

通过collate,可以指定在比较值时要使用的以下配置设置:

场所 区分大小写 重音敏感度 标点敏感度 首字母优先 案例转换 空间修剪 以下示例使用英语Localeen和不区分大小写的ECI排序规则:

select *
    from ( values ('ab'), ('aBc'), ('acd'), ('Z') ) t(col1)
   order by collate(col1, 'en-ci');
返回的结果:

ab aBc acd Z