In diesem Thema erfahren Sie, wie Sie reguläre Ausdrücke in der MySQL-Where-Klausel verwenden, um die Datenfilterung zu steuern.
Eine Einführung in reguläre Ausdrücke
Die Filterbeispiele in den ersten beiden Kapiteln ermöglichen das Auffinden von Daten mithilfe von Übereinstimmungs-, Vergleichs- und Platzhalteroperatoren. Für eine grundlegende Filterung (oder sogar eine nicht so grundlegende Filterung) reicht dies aus. Mit zunehmender Komplexität der Filterbedingungen nimmt jedoch auch die Komplexität der where-Klausel selbst zu.
Hier werden reguläre Ausdrücke nützlich. Reguläre Ausdrücke sind spezielle Zeichenfolgen (Zeichensätze), die zum Abgleichen von Text verwendet werden. Wenn Sie Telefonnummern aus einer Textdatei extrahieren möchten, können Sie reguläre Ausdrücke verwenden. Wenn Sie alle Dateien finden möchten, deren Name eine Zahl enthält, können Sie einen regulären Ausdruck verwenden. Wenn Sie alle wiederholten Wörter in einem Textabschnitt finden möchten, können Sie reguläre Ausdrücke verwenden. Wenn Sie möchten, dass alle URLs auf einer Seite die tatsächlichen HTML-Links dieser URLs sind, können Sie auch reguläre Ausdrücke verwenden.
Alle Programmiersprachen, Texteditoren, Betriebssysteme usw. unterstützen reguläre Ausdrücke. Programmierer und Netzwerkadministratoren achten seit langem auf reguläre Ausdrücke als wichtigen Bestandteil ihrer technischen Werkzeuge.
Reguläre Ausdrücke werden mit der regulären Ausdruckssprache erstellt, einer speziellen Sprache, die für die gesamte gerade besprochene Arbeit und mehr verwendet wird. Wie jede Sprache haben auch reguläre Ausdrücke ihre spezielle Syntax und ihre Anweisungen müssen erlernt werden.
Welche Beziehung besteht zwischen regulären Ausdrücken und MySQL, da reguläre Ausdrücke so nützlich sind? Wie bereits erwähnt, besteht die Funktion regulärer Ausdrücke darin, Text abzugleichen, indem ein Muster (regulärer Ausdruck) mit einer Textzeichenfolge verglichen wird. MySQL bietet vorläufige Unterstützung für reguläre Ausdrücke mithilfe der where-Klausel, sodass Sie reguläre Ausdrücke angeben können, um die von select abgerufenen Daten zu filtern.
Grundlegende Zeichenübereinstimmung mit regulären MySQL-Ausdrücken
Wir beginnen mit einem sehr einfachen Beispiel. Die folgende Anweisung ruft alle Zeilen ab, in denen die Spalte prod_name den Text 1000 enthält:
select prod_name from products where prod_name regexp '1000' order by prod_name;
außer key Diese Anweisung sieht einer Anweisung mit „like“ sehr ähnlich, außer dass das Wort „like“ durch „regexp“ ersetzt wird. Es teilt MySQL mit, dass das, was auf regexp folgt, als regulärer Ausdruck behandelt wird (ein regulärer Ausdruck, der mit dem Textkörper 1000 übereinstimmt).
Warum sollte man sich die Mühe machen, reguläre Ausdrücke zu verwenden? Im vorherigen Beispiel haben reguläre Ausdrücke wirklich keinen großen Nutzen gebracht, aber betrachten Sie das folgende Beispiel:
select prod_name from products where prod_name regexp '.000'order by prod_name;
Hier wird der reguläre Ausdruck .000 verwendet. . ist ein Sonderzeichen in der Sprache für reguläre Ausdrücke. Es bedeutet, dass jedes Zeichen übereinstimmen muss, also sowohl 1000 als auch 2000 übereinstimmen und zurückgeben
Natürlich kann dieses spezielle Beispiel auch mit Like- und Platzhalterzeichen vervollständigt werden.
Es gibt einen wichtigen Unterschied zwischen Like und Regexp. Bitte sehen Sie sich die folgenden beiden Anweisungen an:
wählen Sie Produktname aus Produkten aus, bei denen Produktname wie „1000“ ist, bestellen Sie nach Produktname;
wählen Sie Produktname aus Produkten aus, bei denen Produktname regexp „1000“ ist, bestellen Sie nach Produktname;
Wenn Sie die beiden oben genannten Anweisungen ausführen, werden Sie feststellen, dass die erste Anweisung keine Daten zurückgibt, die zweite Anweisung jedoch eine Zeile zurückgibt.
Gefällt mir stimmt mit der gesamten Spalte überein. Wenn der übereinstimmende Text in einem Spaltenwert vorkommt, wird er von like nicht gefunden und die entsprechende Zeile wird nicht zurückgegeben (es sei denn, es werden Platzhalter verwendet). Und Regexp stimmt mit dem Spaltenwert überein. Wenn der übereinstimmende Text im Spaltenwert vorkommt, wird Regexp ihn finden und die entsprechende Zeile zurückgeben. Das ist ein sehr wichtiger Unterschied.
Kann Regexp also verwendet werden, um den gesamten Spaltenwert abzugleichen und die gleiche Rolle zu spielen wie „like“? Die Antwort steht fest, verwenden Sie einfach die Locators ^ und $.
Das obige ist der detaillierte Inhalt vonTutorial zur Verwendung regulärer Ausdrücke für die Suche in MySQL (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!