【问题标题】:Bigquery Regex for special characters特殊字符的 Bigquery 正则表达式
【发布时间】:2018-02-06 19:08:01
【问题描述】:

下面是一个用特殊字符“»”分隔的长字符串的示例代码。我需要拉出第一个和第三个特殊字符(»)之前的字符串。

    with test as (
    select 'AA»BB»CC»DD»EE»FF' string union all
    select 'ZZ»XX»RR»PP»EE»FF' )

    SELECT REGEXP_EXTRACT(string, r"([^»]*)") AS string_1 from test

使用代码中的正则表达式,我可以提取字符串的第一部分,即“AA”和“ZZ”。但是有什么方法可以提取第三个特殊字符“»”之前的字母,其中预期的输出应该是“CC”和“RR”

感谢您的帮助

【问题讨论】:

    标签: javascript google-bigquery


    【解决方案1】:

    您可以使用SPLIT 代替正则表达式:

    with test as (
      select 'AA»BB»CC»DD»EE»FF' string union all
      select 'ZZ»XX»RR»PP»EE»FF'
    )
    SELECT SPLIT(string, '»')[OFFSET(2)] AS string_1 from test
    

    这将返回 "CC" 和 "RR" 作为输出。

    【讨论】:

    • 非常感谢@Elliott brossard
    【解决方案2】:

    作为替代

    #standardSQL
    WITH test AS (
      SELECT 'AA»BB»CC»DD»EE»FF' str UNION ALL
      SELECT 'ZZ»XX»RR»PP»EE»FF' 
    )
    SELECT code
    FROM test, UNNEST(SPLIT(str, '»')) code WITH OFFSET pos
    WHERE pos = 2   
    

    结果为

    Row code     
    1   CC   
    2   RR   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2017-08-14
      相关资源
      最近更新 更多