HiveQL / SQL-如何基于定界符将一列拆分为不同的列

时间:2019-02-12 15:19:49

标签: sql hive

我有一个名为“ category_tree”的列,它包含不同的产品级别。最高级别为4。例如:

Makeup > Lips > Lip Stain > Others

我想将此值分为4列,分别命名为level1,level2,level3和level4,字符“>”将成为分隔符。

Level1: Makeup
Level2: Lips
Level3: Lip Stain
Level4: Others

如果列值只有三个或更少级别,我希望第4个级别或第3/2个级别为Null。

Makeup > Eyes > Eyebrows

Level1: Makeup
Level2: Eyes
Level3: Eyebrows
Level4: (Null)

执行此操作最简单的SQL代码/函数是什么?我在考虑大小写功能+拆分。.

1 个答案:

答案 0 :(得分:0)

select category_tree, 
trim(split(category_tree,'>')[0]) as level1, 
trim(split(category_tree,'>')[1]) as level2,
trim(split(category_tree,'>')[2]) as level3,
trim(split(category_tree,'>')[3]) as level4
from wh_poc.xxxxxx
limit 600;

我测试了上面的代码,它起作用了〜如果您还有其他想法,请分享。谢谢。