Hive (小案例)查找字符串每个字符出现的下标

Hive (小案例)查找字符串每个字符出现的下标

1 案例说明

输入字符串:
查找字符串每个字符出现的下标
输出每个字符出现的下标:
字符下标
[4,9]

2 案例分析

2.1 生成辅助自增列

select
index
from 
(
   select 
   10 as num
)a 
lateral view posexplode(split(space(num) ,' ')) k as index,data
index
0
1
2
3
4
5
6
7
8
9
10

2.1 将字符串进行分割(借助subStr方法和辅助自增列切割字符串)

subStr(str, pos[, len]) - returns the substring of str that starts at pos and is of length len orsubStr(bin, pos[, len]) - returns the slice of byte array that starts at pos and is of length len
## 从位置0截取1个字符
select subStr("123",0,1)
_c0
1

2.2 收集对应的下标集合

select
collect_list(index) as index_col
from 
(
   select 
   10 as num
)a 
lateral view posexplode(split(space(num) ,' ')) k as index,data
index_col
[0,1,2,3,4,5,6,7,8,9,10]

3 案例

3.1 案列代码

select
w,
str,
collect_list(k_) as w_index
from 
(
select
k_,
str,
substring(str,k_,1) as w 
from 
(
   select 
   "查找字符串每个字符出现的下标" as str 
)a 
lateral view posexplode(split(space(length(str)) ,' ')) k as k_,data
)b where k_> 0
group by str,w
;

3.2 执行结果

wstrw_index
查找字符串每个字符出现的下标[13]
查找字符串每个字符出现的下标[7]
查找字符串每个字符出现的下标[5]
查找字符串每个字符出现的下标[10]
查找字符串每个字符出现的下标[3,8]
查找字符串每个字符出现的下标[2]
查找字符串每个字符出现的下标[1]
查找字符串每个字符出现的下标[14]
查找字符串每个字符出现的下标[6]
查找字符串每个字符出现的下标[11]
查找字符串每个字符出现的下标[12]
查找字符串每个字符出现的下标[4,9]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master_slaves

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值