2017-10-22 2 views
0

ich MYSQL RLIKE in folgenden Abfrage bin mit:mysql 'RLIKE' funktioniert nicht richtig

SELECT 
filtering_table_data.Model, 
case when filtering_table_data.Model 
    RLIKE '^[ETS 2229]' OR '^[F 202]' then 'valid Model' else 'Invalid Model' end 
    AS Model_Status 
FROM 
filtering_table_data 

aber es gibt einige falsche Ausgaben in den Abfrageergebnissen:

enter image description here

ich nicht tat enthält einen regulären Ausdruck für das Modell 'ETS2221', gibt aber die Ausgabe als gültiges Modell an.

Modell Feld ist varchar

+0

Ihre '^ [ETS 2229]' Muster für mich keinen Sinn macht: es, dass das erste Zeichen erfordert ist entweder ein 'e', ein' T', ein 'S', ein Raum, ein '2', eine '2', eine '2' oder ein '9' ... –

+0

' string''‘OR auch scheint nicht ein sehr logischer (Teil von) Ausdruck zu sein ... –

+0

Sorry, dass ich falsch liegen kann, aber wie kann ich mysql Fall verwenden, um die obige mentione zu erhalten d Ausgabe. –

Antwort

1

so etwas wie dieses Versuchen:

SELECT Model, 
     CASE WHEN Model RLIKE '^(ETS 2229|F 202)' THEN 'valid Model ' 
               ELSE 'Invalid Model' AND AS Model_Status 
FROM filtering_table_data 

Siehe MySQL Reference Manual/Regular Expressions

+0

habe es vielen Dank, gibt es eine Möglichkeit, die null/leer Daten unter Verwendung eines anderen sonst –

+0

wenn, um zu überprüfen Legen Sie einfach eine andere ', WENN ... DANN ...' Zeile (n) vor dem 'ELSE' Linie .. . –