【问题标题】:BigQuery: Extract everything between first and fourth underscoreBigQuery:提取第一个和第四个下划线之间的所有内容
【发布时间】:2022-01-06 09:22:16
【问题描述】:

假设我有这个字符串“this_is_a_string_test”

我想提取“is_a_string”。

我该怎么做?使用 SPLIT 和 OFFSET 我可以很容易地提取单个部分,但我想提取第一个和第四个下划线之间的所有内容。 我想我可以使用 CONCAT,但我想知道是否有更清洁的方法

【问题讨论】:

    标签: string split google-bigquery extract


    【解决方案1】:

    试试REGEXP_EXTRACT:

    SELECT REGEXP_EXTRACT('this_is_a_string_test', r'.*_(.+_.+_.+)_.*')
    

    【讨论】:

    • 非常感谢 :)
    【解决方案2】:

    考虑下面的方法

    select col, 
      (select string_agg(word, '_') 
      from unnest(split(col, '_')) word with offset 
      where offset between 1 and 3
      ) extraction
    from data             
    

    如果应用于您问题中的样本数据 - 输出是

    【讨论】:

    • 我不知道这也是可能的。学到了一些东西,谢谢:)!
    • 考虑投票(如果还没有)并接受您认为最适合您的答案:o)
    最近更新 更多