0

たとえば、ハイブクエリ内に「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 この種の予想されるソート結果の正しい構成と、それを設定する場所。

ありがとうございます

4

2 に答える 2

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;
于 2017-02-22T15:09:44.220 に答える