当我在hive查询中有一个“order by”子句时 例如:
SELECT *
FROM categories
ORDER BY category_name
结果将首先排序为所有大写字母,然后排序所有较低的字母 我需要一些表约束或配置来强制执行下面的行为。 使用UPPER / LOWER排序的会话无济于事
当前结果:
AAA
KKK
ZZZ
aaa
bbb
yyy
预期结果
aaa
AAA
bbb
KKK
yyy
ZZZ
是否有任何配置强制配置单元首先按字母顺序排序数据。 在sql中它的排序规则 在oracle中它的LTS 这种预期排序结果的正确配置是什么, 以及设置它的位置。
先谢谢
答案 0 :(得分:1)
如何使用lower()
?
SELECT *
FROM categories
ORDER BY LOWER(category_name);
注意:对于结果的情况,这将是任意的。因为小写字母在所有现代排序规则中都是大写字母,所以你可以这样做:
SELECT c.*
FROM categories c
ORDER BY LOWER(c.category_name), c.category_name DESC;
答案 1 :(得分:0)
为了实现字母排序或任何类型的排序,您可以在查询中使用cluster by。
SELECT *
FROM categories
cluster BY LOWER(category_name);
您也可以选择使用distribute by with sort by选项来获得更多自定义解决方案。 选择 * 来自类别 DISTRIBUTE BY LOWER(category_name) SORT BY LOWER(category_name)DESC