0- 描述
表名:t8
表字段及内容:
a
1011
0101
1- 问题一
描述:如何将字符’1’的位置提取出来
输出结果如下所示:
1,3,4
2,4
参考答案:
select
a,
concat_ws(",",collect_list(cast(index as string))) as res
from (
select
a,
index+1 as index,
chr
from (
select
a,
concat_ws(",",substr(a,1,1),substr(a,2,1),substr(a,3,1),substr(a,-1)) str
from t8
) tmp1
lateral view posexplode(split(str,",")) t as index,chr
where chr = "1"
) tmp2
group by a;
总结:lateral view posexplode(split(str,",")) t as index,chr 这一句sql希望各位同学自己写一写,深入体会,并理解posexplode和explode的区别!!!!