Das Set-upMySQL regulären Ausdruck Operationen
A mysql table "Mytable" genannt hat eine VARCHAR Feld "Daten".
Das Feld enthält eine Zeichenfolge im Format:
name1'value1''name2'value2'' ... nameN''valueN
Ich bin mir bewusst, diese Daten denormalized sind - ich habe zu verwenden "als begrenzt gezwungen, da dies das einzige Zeichen ist, dass ist nicht als Name oder Wert erlaubt.
Hier sind einige Beispieldaten:
one'.6332''two'.4231''three'.343''four'.034
two'.4332''four'.033''five'.043
four'.2323''seven'.3409''nine'.003
Das Problem
Ich versuche zu wählen Zeilen aus "mytable", basierend auf einem Name/Wert-Paar. Zum Beispiel möchte ich alle Zeilen auswählen, die in ihrem Datenfeld den Namen "vier" und einen entsprechenden Wert kleiner als 0,1 haben. (Dies sollte Zeilen 1 und 2 zurückgeben).
Ich möchte dies in einem Schritt tun. Mir ist klar, dass ich die Daten denormalisieren kann und es ganz einfach so mache, aber das würde ich lieber nicht tun. Dieser Vorgang wird nur in höchstens 500 Reihen ausgeführt, daher bin ich nicht besonders besorgt über seine Leistung.
Für Eingänge $ name und $ value, gehe ich davon die Lösung etwas aussehen würde:
SELECT * FROM mytable WHERE
TO_INT(reg_ex(<crazyregex which selects $name>, data)) < $value
Das Problem ist, ich weiß nicht, die Besonderheiten, wie dies zu tun.
In der Hoffnung, dass jemand helfen kann. Vielen Dank!
Gibt es wirklich keine Möglichkeit, auf andere Weise reguläre Ausdrücke in MySQL anders als eine Art und Weise zu tun, die 1 oder 0 zurück? –