hivesql提取两个非字母数字字符之间长度不等的字符串

c86crjj0  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(505)

我想提取位于配置单元ql中两个重复下划线之间的不同长度的字符串。具体来说,我想提取第3和第4个下划线之间的字符串。谢谢!

2016_sadfsa_IL_THIS_xsdaf_asd_eventbyevent_tsaC_NA_300x250 
2017_thisshopper_MA_THIS_NAT_Leb_ReasonsWhy_HDIMC_NA_300x600
2017_FordShopper_IL_THESE_NAT_sov_winterEvent_HDIMC_NA_300x600

只是一直在尝试,我修改了以前对非配置单元sql的响应。我仍然有兴趣知道更好的方法做这件事。请注意 creative_str 列的名称:

select creative_str, ltrim(rtrim(substring(regexp_replace(cast(creative_str as varchar(1000)), '_', repeat(cast(' ' as varchar(1000)),10000)), 30001, 10000))) 
from impression_cr
egdjgwm8

egdjgwm81#

你应该可以用 hive 的 SPLIT() 功能。如果要获取第三个和第四个下划线之间的值,则可以这样做:

SELECT  SPLIT("2016_sadfsa_IL_THIS_xsdaf_asd_eventbyevent_tsaC_NA_300x250", "[_]")[3],
        SPLIT("2017_thisshopper_MA_THIS_NAT_Leb_ReasonsWhy_HDIMC_NA_300x600", "[_]")[3],
        SPLIT("2017_FordShopper_IL_THESE_NAT_sov_winterEvent_HDIMC_NA_300x600", "[_]")[3]

相关问题