2012-04-13 17 views
2

Ich mag dieseMysql wählen Abfrage REGEX mit

select * from table1 where 
table1.name 
REGEXP '[[:<:]]1.1[[:>:]]' 

Die Abfrage eines regulear Ausdruck im mysql bin mit den Resultaten aus, Feld, dessen Namen hat auch 1.1.1 Wert. Gefällt Ihnen dieses

pk name 
5 1.1 
6 1.1.1 

aber ich brauche nur 1,1

Irgendwelche Ideen passen?

Antwort

2
select * from table1 where 
table1.name 
REGEXP '^1.1$' 

stellt sicher, dass nur 1.1 erlaubt ist (aber auch 1X1 oder 111, da der Punkt jedes Zeichen übereinstimmt - wenn Sie einen wörtlichen Punkt übereinstimmen sollen, verwenden ^1\.1$).

Natürlich gibt es jetzt die Frage, warum Sie überhaupt eine Regex verwenden möchten, da es sich nur um eine literale Zeichenfolge handelt, die Sie abgleichen, nicht um ein variables Muster.

Ihre regex ist fehlgeschlagen, da Sie Start-/End-of-Wort Anker, die zwischen alphanumerischen Zeichen und nicht-alphanumerischen Zeichen (oder Start/Ende der Zeichenfolge), und da [[:>:]] Einstimmungen zwischen 1 und ., die regex abgestimmt wurden unter Verwendung übereinstimmen 1.1.1 zumindest teilweise.