Snowflake cloud data platform 文本上的雪花排序似乎不正确
我对snowflake还不熟悉,并注意到文本列上的顺序与预期不符 举个简单的例子: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>按: 所有
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