sql - 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 代码/函数可能是什么?我在考虑案例功能+拆分..
解决方案
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;
我测试了上面的代码,它成功了~如果您有任何其他想法,请分享。谢谢。
推荐阅读
- delphi - 如何获取 Powerpoint 文件的总持续时间
- java - 如何获取拦截器中操作 url 中定义的参数
- c# - 我收到警告:您正在尝试使用“新”关键字创建 MonoBehaviour
- excel - 从表单返回到模块
- node.js - 使用 HTTP 模块的 AWS Lambda 函数未发出任何请求
- spring - 如何获取 Spring 应用程序中所有属性的映射?
- python - 无法将字符串转换为浮点数(熊猫)
- javascript - How to use innerHTML or innerText to insert into the Evernote editor which is the rich text editor?
- reactjs - Firebase 未使用新数据更新
- python - Referencing column names alongside values in python when generating multiple txt files