我对雪花很陌生,并且注意到文本列上的排序不像预期的那样。
以这个简单的例子为例:
select *
from ( values ('ab'), ('aBc'), ('acd') ) t(col1)
order by col1预期订单: ab,aBc,acd
实际订单:aBc ab acd
我是不是遗漏了什么?
谢谢。
发布于 2020-08-31 14:29:21
您可以直接在order子句中使用COLLATE规范。
排序规则允许您指定在比较值时使用的下列配置设置:
下面的示例使用英语语言环境(En)和大小写不敏感(Ci)排序规则:
select *
from ( values ('ab'), ('aBc'), ('acd'), ('Z') ) t(col1)
order by collate(col1, 'en-ci');返回的结果:
ab aBc acd
发布于 2020-08-28 16:56:29
发布于 2020-08-28 17:00:29
这也将排序"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)https://stackoverflow.com/questions/63637509
复制相似问题