目录
0 问题描述
问题描述:如何将字符串"1-5,16,11-13,9"扩展成
"1,2,3,4,5,16,11,12,13,9"?注意顺序不变。
1 数据准备
create table t as
select '1-5,16,11-13,9' as a
2 数据分析
解题技巧利用posexplode()函数
第一步:将原始串按照逗号切割并展开,生成表1
select explode(split(a,',')) as a
from t
+--------+
| a |
+--------+
| 1-5 |
| 16 |
| 11-13 |
| 9 |
+--------+
第二步:将表1中的数据固定顺序,保证有序性
select a
,row_number() over() as rn --生成顺序id,目的保证顺序
from
(select explode(split(a,',')) as a
from t
) t</