Gewöhnliche Gespräche über die Verwendung von MYSQL Pattern Matching REGEXP und ähnliches

Gewöhnliche Gespräche über die Verwendung von MYSQL Pattern Matching REGEXP und ähnliches

wie

Für LIKE ist eine Übereinstimmung der gesamten Daten erforderlich, während für REGEXP nur eine teilweise Übereinstimmung erforderlich ist.
Das heißt, um „Like“ zu verwenden, muss der gesamte Inhalt des Felds die Bedingung erfüllen, während bei REGEXP nur ein beliebiges Fragment die Bedingung erfüllen muss.

MySQL bietet standardmäßige SQL-Musterübereinstimmung (ähnlich) sowie ein Format, das auf erweiterter Musterübereinstimmung mit regulären Ausdrücken basiert und dem von Unix-Dienstprogrammen wie vi, grep und sed (regexp) verwendeten ähnelt.
Mit der SQL-Musterübereinstimmung können Sie „_“ für die Übereinstimmung mit jedem einzelnen Zeichen und „%“ für die Übereinstimmung mit einer beliebigen Anzahl von Zeichen (einschließlich Nullzeichen) verwenden. In MySQL wird bei den SQL-Modi standardmäßig die Groß-/Kleinschreibung nicht beachtet . Nachfolgend sind einige Beispiele aufgeführt. Beachten Sie, dass Sie im SQL-Modus nicht = oder != verwenden können. Verwenden Sie stattdessen die Vergleichsoperatoren LIKE oder NOT LIKE.

So finden Sie Namen, die mit „b“ beginnen:

mysql> SELECT * FROM Haustier WHERE Name LIKE "b%";
+--------+--------+---------+------+------------+------------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | Hund | f | 13.05.1989 | NULL |
| Bowser | Diane | Hund | m | 31.08.1989 | 29.07.1995 |
+--------+--------+---------+------+------------+------------+

So finden Sie Namen, die mit „fy“ enden:

mysql> SELECT * FROM Haustier WHERE Name LIKE "%fy";
+--------+--------+---------+------+------------+-----------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+--------+--------+---------+------+------------+-----------+
| Fluffy | Harold | Katze | f | 04.02.1993 | NULL |
| Buffy | Harold | Hund | f | 13.05.1989 | NULL |
+--------+--------+---------+------+------------+-----------+

So finden Sie Namen, die ein „w“ enthalten:

mysql> SELECT * FROM Haustier WHERE Name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+----------+-------+---------+------+------------+------------+
| Krallen | Gwen | Katze | m | 17.03.1994 | NULL |
| Bowser | Diane | Hund | m | 31.08.1989 | 29.07.1995 |
| Whistler | Gwen | Vogel | NULL | 09.12.1997 | NULL |
+----------+-------+---------+------+------------+------------+

Um Namen zu finden, die genau aus 5 Zeichen bestehen, verwenden Sie das Musterzeichen „_“:

mysql> SELECT * FROM Haustier WHERE Name LIKE "_____";
+-------+--------+---------+------+------------+-----------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+-------+--------+---------+------+------------+-----------+
| Krallen | Gwen | Katze | m | 17.03.1994 | NULL |
| Buffy | Harold | Hund | f | 13.05.1989 | NULL |
+-------+--------+---------+------+------------+-----------+

REGEXP

Eine andere Art der Übereinstimmung basiert auf regulären Ausdrücken. Wenn Sie nach einer Übereinstimmung mit solchen Mustern suchen, verwenden Sie die Operatoren REGEXP und NOT REGEXP (oder RLIKE und NOT RLIKE, die Synonyme sind).

"." entspricht jedem einzelnen Zeichen.

Eine Zeichenklasse "[...]" entspricht jedem Zeichen innerhalb der eckigen Klammern. Beispielsweise entspricht „[abc]“ „a“, „b“ oder „c“. Um einen Zeichenbereich zu benennen, verwenden Sie ein "-". „[az]“ entspricht jedem Kleinbuchstaben und „[0-9]“ entspricht jeder Ziffer.
„ * “ stimmt mit null oder mehr der davor stehenden Zeichen überein. Beispielsweise entspricht „x*“ einer beliebigen Anzahl von „x“-Zeichen, „[0-9]*“ entspricht einer beliebigen Anzahl von Ziffern und „.*“ entspricht einer beliebigen Anzahl von beliebigen Zahlen.

Bei regulären Ausdrücken muss die Groß-/Kleinschreibung beachtet werden . Wenn Sie möchten, können Sie jedoch eine Zeichenklasse verwenden, um beides abzugleichen. Beispielsweise entspricht „[aA]“ dem großen oder kleinen „a“ und „[a-zA-Z]“ entspricht jedem Buchstaben in beiden Fällen.

Das Muster stimmt überein, wenn es irgendwo im getesteten Wert vorkommt (SQL-Muster stimmen überein, solange sie mit dem gesamten Wert übereinstimmen).
Um ein Muster so zu positionieren, dass es mit dem Anfang oder Ende des getesteten Werts übereinstimmen muss, verwenden Sie „^“ am Anfang des Musters oder „$“ am Ende des Musters.
Um zu veranschaulichen, wie erweiterte reguläre Ausdrücke funktionieren, wird die oben gezeigte LIKE-Abfrage unten mit REGEXP umgeschrieben:
Um Namen zu finden, die mit „b“ beginnen, verwenden Sie „^“ für den Anfang des Namens und „[bB]“ für ein großes oder kleines „b“:

mysql> SELECT * FROM Haustier WHERE Name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | Hund | f | 13.05.1989 | NULL |
| Bowser | Diane | Hund | m | 31.08.1989 | 29.07.1995 |
+--------+--------+---------+------+------------+------------+

Um Namen zu finden, die mit „fy“ enden, verwenden Sie „$“, um das Ende des Namens abzugleichen:

mysql> SELECT * FROM Haustier WHERE Name REGEXP "fy$";
+--------+--------+---------+------+------------+-----------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+--------+--------+---------+------+------------+-----------+
| Fluffy | Harold | Katze | f | 04.02.1993 | NULL |
| Buffy | Harold | Hund | f | 13.05.1989 | NULL |
+--------+--------+---------+------+------------+-----------+

Um Namen zu finden, die ein „w“ enthalten, verwenden Sie „[wW]“, um entweder ein kleines oder ein großes „w“ zu finden:

mysql> SELECT * FROM Haustier WHERE Name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| Name | Besitzer | Art | Geschlecht | Geburt | Tod |
+----------+-------+---------+------+------------+------------+
| Krallen | Gwen | Katze | m | 17.03.1994 | NULL |
| Bowser | Diane | Hund | m | 31.08.1989 | 29.07.1995 |
| Whistler | Gwen | Vogel | NULL | 09.12.1997 | NULL |
+----------+-------+---------+------+------------+------------+

[^……], entspricht Zeichen, die nicht in [] enthalten sind, z. B. die Suche nach Namen, die mit w/z/s beginnen

Wählen Sie den Namen aus dem Tabellennamen, wobei der Name der reguläre Ausdruck „^[^wzs]“ ist.

*, 0 oder mehr Mal wiederholt, Studenten, die mit regulären Ausdrücken in Javascript vertraut sind, wissen

„str*“ kann mit st/str/strr/strrr übereinstimmen …

?, 0 oder 1 Mal wiederholt

„str?“ kann mit „st“/„str“ übereinstimmen

+, 1 oder mehr Mal wiederholen

„str+“ kann mit str/strr/strrr/strrrr übereinstimmen …

Verglichen mit dem regulären Ausdruck in JavaScript ist der reguläre Ausdruck hier eine vereinfachte Version. Es gibt kein Lazy Matching/Greedy Matching. Die Syntax von \w\s\d wird in [] nicht unterstützt und Chinesisch wird nicht unterstützt. Es ist relativ einfach .

Der obige Artikel über die Verwendung von MYSQL-Mustervergleichen mit REGEXP und Ähnlichem ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Detaillierte Analyse der MySQL-Optimierung von like und = Leistung
  • Mysql | Detaillierte Erklärung der Fuzzy-Abfrage mit Platzhaltern (wie, %, _)
  • Detaillierte Einführung in die Verwendung von MySQL-Fuzzy-Abfragen LIKE und REGEXP
  • PHP MySQL-ähnliche Methode zur Realisierung einer Suche mit mehreren Schlüsselwörtern
  • Tabellenreplikation in MySQL: Tabelle wie folgt erstellen und Tabelle als Auswahl erstellen
  • MySQL-ähnliche Abfragezeichenfolgen-Beispielanweisung
  • MySQL regulärer Ausdruck LIKE Platzhalter
  • So lösen Sie das Problem der langsamen Geschwindigkeit von MySQL wie bei Fuzzy-Abfragen

<<:  Lösung für das Problem, dass bei der Installation von Centos7 mit VmWare kein Zugriff auf das Internet möglich ist

>>:  Detaillierte Erläuterung der ersten Erfahrungen mit Vue3.0 + TypeScript + Vite

Artikel empfehlen

mysql-8.0.16 winx64 neuestes Installationstutorial mit Bildern und Text

Ich habe erst vor Kurzem angefangen, mich mit Dat...

So implementieren Sie Bildmapping mit CSS

1. Einleitung Mit Imagemaps können Sie Bereiche e...

Übersicht über die Definition der HTC-Komponenten nach IE5.0

Vor der Veröffentlichung von Microsoft IE 5.0 best...

Warum sollten Sie mit der add_header-Direktive von Nginx vorsichtig sein?

Vorwort Wie wir alle wissen, legt die Nginx-Konfi...

Detaillierte Erklärung zur Verwendung von ElementUI in Vue

Anmeldung + SessionStorage Effektanzeige Nach ein...

15 Best Practices für HTML-Anfänger

Hier sind 30 Best Practices für HTML-Anfänger. 1....

Grundlegende Anwendungsbeispiele für benannte Slots in Vue

Vorwort Benannte Slots werden mithilfe des Attrib...

So erstellen Sie einen Nginx-Image-Server mit Docker

Vorwort Bei der allgemeinen Entwicklung werden Bi...

React implementiert Endlosschleifen-Scrollinformationen

In diesem Artikel wird der spezifische Code von R...

Detaillierte Analyse der HTML-Semantik und der zugehörigen Front-End-Frameworks

Über Semantik Die Semantik ist die Lehre von der ...