Hive对细胞不敏感的字母排序



当我订购时例如:

SELECT *
FROM categories
ORDER BY category_name

结果将首先作为所有大写字母排序,然后将所有下部字母分类。我需要一些表约束或配置来强制执行以下行为。上/下部的会话排序无济于事。

当前结果:

AAA
KKK
ZZZ
aaa
bbb
yyy

预期结果:

aaa
AAA
bbb
KKK
yyy
ZZZ

是否有任何配置可以强制执行Hive首先对数据进行排序?

在sql中,这是一个整理。在Oracle内部是LTS。

对于这种预期排序结果以及在哪里设置的正确配置是什么?

仅使用 lower()

怎么样
SELECT *
FROM categories
ORDER BY LOWER(category_name);

注意:这将对结果的情况进行任意。因为下案字母是在所有现代校正中的大型案例之后的,所以您可以这样做:

SELECT c.*
FROM categories c
ORDER BY LOWER(c.category_name), c.category_name DESC;

为了实现字母顺序排序或任何类型的排序,您可以在查询中使用群集。

SELECT *
FROM categories
cluster BY LOWER(category_name);

您可以选择将分布式与选项一起使用,以获取更多自定义的解决方案。选择 *来自类别通过Lower(category_name)分发按较低(category_name)desc

排序

最新更新