谷歌大查询中的正则表达式

时间:2016-06-02 20:19:39

标签: sql google-bigquery

查询:

SELECT DebugData
CASE
 WHEN lower(DebugData) LIKE 'veri%' THEN 'Verizon'
 WHEN REGEXP_MATCH(LOWER(DebugData),r'^\d+$') THEN c.Network 
 ELSE REGEXP_REPLACE(lower(DebugData),r'[^a-zA-Z]', ' ')
END
AS ActualCarrier
From table

数据:

DebugData  Correct_result  Current_result
310410?                    c.Network
302220?                    c.Network
Comcel2                    Comcel
Gig?                       Gig

目前查询不适用于前两种情况。我确信与c.Network没有任何关系,因为我也尝试过以下声明而且它不起作用。

WHEN REGEXP_MATCH(LOWER(DebugData),r'^\d+$') THEN 'hi'

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

同时,请尝试以下内容 - 我认为它可以捕获您缺少的部分要求

SELECT DebugData
CASE
 WHEN lower(DebugData) LIKE 'veri%' THEN 'Verizon'
 WHEN REGEXP_MATCH(LOWER(DebugData),r'^\d+[^a-zA-Z]*$') THEN c.Network 
 ELSE REGEXP_REPLACE(lower(DebugData),r'[^a-zA-Z]', ' ')
END
AS ActualCarrier
From table

注意:您应该至少为自己完成您的要求,并尝试在您的特定情况下采用以上

我建议您阅读Regular expression functionsRE2 regular expression syntax reference