2016-06-02 3 views
0

Abfrage:Regulärer Ausdruck in Google großer Abfrage

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 

Daten:

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

Derzeit ist die Abfrage nicht für die ersten 2 Fälle funktioniert. Ich bin sicher, dass nichts mit c.Network zu tun hat, denn ich habe auch die unten stehende Aussage ausprobiert und es funktioniert nicht.

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

Jede Hilfe wäre willkommen.

+0

in Ihrer vorherigen Frage haben Sie sehr spezifische Anforderung - 'Wenn DebugData nur Ziffern enthält, dann sollte es das c.Network aber für eine Kombination von dig nehmen Seine und Alphabete, sollte es die anderen Zeichen ersetzen und drucken nur Alphabete "- so die Abfrage genau dies. Wenn dies nicht das ist, was Sie meinten - formulieren Sie bitte Ihre "Anforderungen" neu. –

Antwort

2

Inzwischen versuchen unten - ich denke, es fängt, dass Ihre Anforderungen

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 

Hinweis fehlt Teil: Sie sollten Ihre Anforderungen zumindest für sich selbst beenden und versuchen, oben zu Ihrem speziellen Fall

zu verabschieden Ich würde empfehlen zu lesen Regular expression functions und RE2 regular expression syntax reference

+0

Danke für das Teilen der Messwerte. – user3447653