![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hallo Leute, mich beschäftigt die Frage der RegEx - Funktionen von MySQL schon seit geraumer Zeit. Es geht darum, dass ich statt hunderte Datenbankeinträge in PHP zu laden und dort dann zu verarbeiten gerne die Verarbeitung in MySQL vornehmen würde, sodass PHP wirklich nur die Arbeit bewältigen muss, für die eine Datenbank nicht zuständig ist. Genauer gesagt geht es um das Problem der Syntax. Es ist so, dass ich Code: 'SPALTENNAME' REGEXP 'der reguläre Ausdruck' Ich hätte aber gerne Code: 'ein String aus PHP übergeben' REGEXP 'der reguläre Ausdruck' Mit anderen Worten: Im String sind viele Worte in variabler Reihenfolge. In den Spalten für die RegExp sind reguläre Ausdrücke für ein Wort oder eine Wortgruppe enthalten. Lautet der String nun "In Berlin wohnt Anton", und in der Datenbank liegen folgende Datensätze in Form von regulären Ausdrücken vor (hier natürlich nicht weiter - der Einfachheit halber - abstrakt dargestellt Dresden, Leipzig, Maria, Martin, Berlin, Eduard, Potsdam, Anton Dann möchte ich, dass mir die ID vom Datensatz Berlin und Anton zurückgeliefert wird. Folgende Herangehensweisen hatte ich schon: Der Suchstring wird versucht in RegExp-Form umzuschreiben, in der Datenbank stehen dann nur die Namen. Dann könnte ich die Standardsyntax anwenden.Ich finde einfach keine Lösung. Selbst wenn die Datenbank wüsste, dass auf "Anton" der reguläre Ausdruck "^Anton$" passt ('Anton' REGEXP '^Anton$'), würde das ganze nicht laufen, weil MySQL annimmt, dass 'Anton' eine Tabellenspalte ist und kein String, in dem der reguläre Ausdruck ^Anton$ gesucht wird. Die einzige Möglichkeit wäre eine Methode, bei der MySQL 'Anton' als String annimmt und die regulären Ausdrücke durch einen Subquery in ein Array gepackt werden (geht meines Wissens nach nicht) und dieses dann Eintrag um Eintrag durchlaufen wird, oder MySQL aber annimmt, dass an der Stelle von ^Anton$ ein Spaltenname steht, dessen Inhalt den RegExp enthält, der angwendet werden soll. Also quasi die Standardsyntax einmal umgedreht. Ich weiß leider nicht, wie ich das realisiere und habe diesbezüglich schon mal eine Anfrage ins Forum gestellt. Eine neue Idee von mir ist nun, dass es vielleicht eine Möglichkeit gibt, MySQL zu zwingen, Ergebnisse zeilenweise durchzugehen. Wenn ich also in Kauf nehme, dass ich den Suchstring wirklikch einmal abspeichern muss, dass ich dann wenigstens sagen kann 'Spalte mit Suchstring' REGEXP (SELECT 'SPALTE MIT REGEX' FROM...) wobei die Ergebnisse des SELECTs ähnlich wie beim mysql_fetch_array zeilenweise durchgegangen werden. Eine Möglichkeit hierfür bietet Fetch (http://dev.mysql.com/doc/refman/5.1/de/fetch.html) , wobei ich aber nicht weiß, was ein Cursor ist, wie performant er arbeitet und und und. Mir fehlen hierfür auch zurzeit die Testmöglichkeiten. Auch weiß ich nicht, ob FETCH wirklich das tut, was ich hier beschreibe - nämlich nur ein Argument für den regulären Ausdruck an REGEXP zu übergeben, anstatt viele, wie es bei einem SELECT der Fall wäre. Ich kann Fetch leider zurzeit auch nicht testen. Ich bin für jeden Tipp dankbar! Gruß |
| | |
| | Nach oben #2 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hi, ich habe mir heute noch ein paar Webseiten zum Thema Cursor und Fetch angesehen, allerdings keine brauchbaren Tutorials gefunden. Mithilfe von MYSQL-eigenen Kontrollstrukturen könnte ich mein Problem vielleicht lösen - hat jemand dazu Referenzen? Gruß |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Server] LAMPP mit ftp, openSSL, msmtp, webalizer und phpmyadmin in einer chroot | Jann Hendrik | Tutorials | 4 | 24.02.2009 14:55 |
| Dynamischer MySQL-Query in MySQL | Sekundentakt | Datenbanken | 11 | 14.01.2009 09:05 |
| ssh tunnel zu einer mysql datenbank | beny_mcde | Datenbanken | 4 | 07.06.2006 16:05 |
| MySQL 5.1 kommt in die Beta-Phase | Ben | Nachrichten | 1 | 02.03.2006 14:31 |
| Applet mit Canvas-Objekt | Carsten | Allgemeine Java-Programmierung | 3 | 16.10.2005 11:44 |