【问题标题】:HiveQL / SQL - How to split a column to different columns based on a delimiter characterHiveQL / SQL - 如何根据分隔符将列拆分为不同的列
【发布时间】:2019-02-12 15:19:49
【问题描述】:

我有一个名为“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 代码/函数可能是什么?我在考虑case函数+拆分..

【问题讨论】:

  • 如何识别一个表中有多少条记录属于category,还是会有另一个col(比如说col1)来表示每个col1值有多少个category

标签: sql hive


【解决方案1】:
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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多