gpt4 book ai didi

regex - hive :字符串中的第一个和最后一个出现

转载 作者:行者123 更新时间:2023-12-02 18:57:48 28 4
gpt4 key购买 nike

我有一个id列和一个字符串列,如下所示:

id   values
1 AD123~DF123~SQ345
2 CF234~DF234
3 BG123

我需要Hive下面的列的第一次出现和最后一次出现
id  first   last    
1 AD123 SQ345
2 CF234 DF234
3 BG123 BG123

我已经尝试过使用HIVE split函数来解决它
select id, split(values, '\~') [0] as first, reverse(split(reverse(values), '\~')[0]) from demo;

我在Hive中不断收到语法错误,说[是意外的。

我发现的另一种选择是regex,但是我是Hive的新手,请问有人可以通过regex或split帮助我。谢谢

最佳答案

使用拆分:

with your_table as(
select stack(3,
1, 'AD123~DF123~SQ345',
2, 'CF234~DF234',
3, 'BG123'
) as (id,values)
) --use your_table instead of this

select id, values[0] as first, values[size(values)-1] as last
from
(
select id, split(values,'~') values
from your_table t
)s
;

返回值:
id      first   last
1 AD123 SQ345
2 CF234 DF234
3 BG123 BG123

使用正则表达式:
select id, 
regexp_extract(values,'^([^~]*)',1) as first,
regexp_extract(values,'([^~]*)$',1) as last
from your_table t
;

关于regex - hive :字符串中的第一个和最后一个出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58405489/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com