【问题标题】:Hive SQL Extract string of varying length between two non-alphanumeric charactersHive SQL 提取两个非字母数字字符之间不同长度的字符串
【发布时间】:2018-04-20 07:14:38
【问题描述】:

我想提取位于 Hive QL 中两个重复下划线之间的不同长度的字符串。下面我展示了行模式的示例。具体来说,我想提取第三个和第四个下划线之间的字符串。谢谢!

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 

只是不断尝试,我从以前对非 Hive 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

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    您应该可以使用 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-28
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多