Reguläre ausdrücke in einem SQL select?
uepselon
- datenbank
0 Julian Hofmann0 Bio0 uepselon
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
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
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
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