当我订购时例如:
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