select
count(case when value like 'REG:%' then 1 end) REGcount
, count(case when value like 'IMP:%' then 1 end) IMPcount
from split('REG:aaaaa|REG:bbbbb|REG:cccc|IMP:abcd|IMP:efghi','[|]')
select size(split(str, '(^|\\|)REG:'))-1 as REG_cnt,
size(split(str, '(^|\\|)IMP:'))-1 as IMP_cnt
from
(--initial data
select 'REG:aaaaa|REG:bbbbb|REG:cccc|IMP:abcd|IMP:efghi' as str
)s
结果:
reg_cnt imp_cnt
3 2
普雷斯托/雅典娜:
select cardinality(regexp_split(str, '(^|\|)REG:'))-1 as REGcnt,
cardinality(regexp_split(str, '(^|\|)IMP:'))-1 as IMPcnt
from
(--initial data
select 'REG:aaaaa|REG:bbbbb|REG:cccc|IMP:abcd|IMP:efghi' as str
)s
2条答案
按热度按时间c0vxltue1#
应该是这样的:
对于模式搜索,我不确定“[|]”是否有效或“\|”。所以让我们知道
vxqlmq5t2#
你可以用
'(^|\\|)REG:'
-这个正则表达式的意思是'REG:'
在字符串或'|REG:'
,然后取数组-1的大小。hive演示:
结果:
普雷斯托/雅典娜:
结果:
使用此方法不需要分解数组和聚合计数。