查询:
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'
任何帮助都将不胜感激。
答案 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 functions和RE2 regular expression syntax reference