uepselon: Reguläre ausdrücke in einem SQL select?

Hallo,

ist es eigentlich irgendwie möglich eine select in dieser Form zu gestalten? :

select feld from db where feld like "[a-z]%"

Sprich das z.b. das erste Zeichen ein beliebiger buchstabe sein kann und der rest ist egal.

Ich suche nämlich noch eine Abfrage um folgendes zu realisieren:

Gefunden werden sollen alle Felder die in den ersten beiden Stellen einen Buchstaben haben an dritter stelle einen Doppelpunkt an vierter ein Leerzeichen und der rest ist egal. Geht sowas mit sql überhaupt?
wenn ja, wie?

Gruß

ueps

  1. Hallo Ueps,

    hab's noch nie gebraucht/angewendet, aber bin letztens drübergestolpert: mysql hat eine Funktion Substring (http://www.mysql.com/doc/S/t/String_functions.html). Entsprechend aneinandergereiht in der where-klausel dürfte es klappen.

    Grüße aus Würzburg
    Julian

  2. Sup!

    In Oracle kannst Du immerhin mit LIKE nach "__: %" suchen - zwei beliebige Zeichen, Doppelpunkt, Leerzeichen, dann sonstwas...

    Vielleicht gibt es in Deinem SQL-Dialekt ja auch die substr-Funktion - dann könnte evtl. folgendes gehen:

    SELECT bla FROM xyz
    WHERE bla LIKE "__: %"
    AND
    substr (bla,1,2) BETWEEN "AA" and "zz"

    Dann müsste natürlich die between-Sache mit Buchstaben funktionieren, und das ist schonmal sehr fraglich.

    Evtl. könntest Du versuchen, die ersten beiden Buchstaben jeweils einzeln in eine Zahl umzuwandeln, und mit der NVL-Funktion eventuelle "NULL" (weil es ein Buchstabe war), in eine Zahl grösser 9 zu konvertieren.

    quasi

    SELECT bla FROM xyz
    WHERE bla LIKE "__: %"
    AND
    NVL(substr(bla,1,1),10) = 10
    AND
    NVL(substr(bla,2,1),10) = 10

    Tja... viele Wege führen nach Rom, im Notfall hat Deine DB ja möglicherweise pl/sql oder sowas, und Du kannst eine stored procedure schreiben, die ein pattern-matching macht.

    Gruesse,

    Bio

  3. Hallo,

    danke euch beiden für die Antwort, mit
    select feld from db where feld like "__: %" and substr(feld,0,2) between "AA" and "zz" , hats geklappt.

    Wusste bisher gar nicht das man auch so schöne Funktionen wie substr etc. in einem select verwenden kann.

    viel Grüße

    ueps