首页 > 解决方案 > HiveQL / SQL - 如何根据分隔符将列拆分为不同的列

问题描述

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

Makeup > Lips > Lip Stain > Others

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

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

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

Makeup > Eyes > Eyebrows

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

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

标签: sqlhive

解决方案


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;

我测试了上面的代码,它成功了~如果您有任何其他想法,请分享。谢谢。


推荐阅读