Carla: MySQL REGEXP

Hi,
wie kann ich mit REGEXP (innerhalb der Query) nur die Zahlen aus einem String selektieren?

Mir ist das nicht ganz klar.
http://dev.mysql.com/doc/refman/5.1/de/regexp.html

Ich möchte mein ORDER BY nach den Zahlen aus einer Spalte (wo aber auch andere Zeichen stehen können) aufbauen.

Grüße
Carla

  1. Es gibt keine Spalten - es gibt Felder.

    Und du kannst dir während der Abfrage ein Feld erzeugen, nach dem du sortieren kannst und den Inhalt des Feldes erzeugst du mit einem Ausdruck indem du alles rausschmeisst, was keine Dezimalziffer ist (sofern du das mit "Zahl" meinst).

    table
    foo | bar
    ----+----
    a   | b1
    c   | a3
    d   | as2

    SELECT foo, bar, PREG_REPLACE(/\D/, '', bar) as baz FROM table ORDER BY baz

    lib_mysqludf_preg muss dafür allerdings vorhanden sein.

    1. Hi!

      Es gibt keine Spalten - es gibt Felder.

      Spalten und Felder können hier gefahrlos synonym verwendet werden, es gibt keine Verwechslungsgefahr oder Bedeutungsunterschiede.

      SELECT foo, bar, PREG_REPLACE(/\D/, '', bar) as baz FROM table ORDER BY baz
      lib_mysqludf_preg muss dafür allerdings vorhanden sein.

      Man muss dann nur noch administrativen Zugang zum Server haben, um das hinzufügen zu können. Ansonsten wüsst ich jetzt nicht, wie man das Ziel erreichen kann, weil die Funktionen für reguläre Ausdrücke nur zum Vergleichen geeignet sind, nicht aber zum Teilstringermitteln.

      Lo!

      1. Ansonsten wüsst ich jetzt nicht, wie man das Ziel erreichen kann, weil die Funktionen für reguläre Ausdrücke nur zum Vergleichen geeignet sind, nicht aber zum Teilstringermitteln.

        Mit Lin^WOracle wäre das nicht passiert - aber halt, MySQL gehört jetzt Oracle, ob die das wohl nachpatchen? Vermutlich ja - aber nur für die kommerzielle Version :)