2017-07-28 3 views
1

Ich habe eine Tabelle MY_TBL mit einem Varchar-Feld MY_FLD. Ich muss Zeilen finden, in denen MY_FLD eine Zahl enthält, gefolgt von einem Bindestrich gefolgt von einer Zahl (in der Regel ein Bereich).Mysql REGEX Vorkommen und Extraktion in String

fffff 1-5 fdsfdsfds 
1-5 fdsfdsfds 
aaaa 10-23 
1-50 fdsfdsfds 

und diese sollten nicht: für die Nummer-Bindestrich Zahlenmuster

-5 dsgdgf 
10- rere 
-15 
10 -23 
10- 23 

Die regex ist \d+\-\d+

die folgenden Zeilen ausgewählt werden.

Wie verwende ich es in einer MySql-Anweisung? Ist es möglich, das Muster in eine separate Zeichenfolge zu extrahieren?

fffff 1-5 fdsfdsfds -> 1-5 
1-5 fdsfdsfds -> 1-5 
aaaa 10-23 -> 10-23 
1-50 fdsfdsfds -> 1-50 
+0

Sie müssen die vollständige Zeile zurückgeben und dann den Wert mit einem Regex in PHP ziehen. Hier ist ein Thread zum Extrahieren mit mysql, https://stackoverflow.com/questions/4021507/mysql-use-regex-to-extract-string-select-regex, eine der Antworten hat ein Tool, das Sie installieren könnten – chris85

Antwort

3

Sie können so die passenden Zeilen abzurufen:

SELECT * FROM MY_TBL WHERE MY_FLD REGEXP '[0-9]+-[0-9]+' 

Keine Notwendigkeit, die - zu entkommen und eine Ziffer zu entsprechen, verwenden [0-9] Klammerausdruck.

Es gibt keine einfache, eingebaute Möglichkeit, die Regex-Matches in MySQL zu extrahieren.