Analyse der Verwendung von „replace“ und „regexp“ zum Ersetzen regulärer Ausdrücke in MySQL

Analyse der Verwendung von „replace“ und „regexp“ zum Ersetzen regulärer Ausdrücke in MySQL

Dieser Artikel veranschaulicht anhand von Beispielen die Verwendung von „replace“ und „regexp“ zum Ersetzen regulärer Ausdrücke in MySQL. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Heute hat mich ein Freund gefragt, wie man die in der Datenbank gefundenen Formate ähnlich „./uploads/110100_cityHotel_北京富豪豪酒店.jpg“ in „./uploads/110100cityHotel北京富豪豪酒店.jpg“ ändert. Ich habe Daten noch nie auf diese Weise verarbeitet, weiß aber, dass MySQL dies mithilfe von Ersetzen kann und dass dies auch mit regulären Ausdrücken möglich ist.

Wie geht das?

Wir brauchen nur einen Satz wie diesen:

Aktualisiere master_data.md_employee, setze Name=replace(name,"_",''), wobei ID = 825;

- Beachten Sie „replace(Feldname, „zu ersetzende Zeichen“, „zu ersetzende Zeichen“)“, das ist alles.

In MySQL werden „replace“ und „regexp“ hauptsächlich zum Ersetzen von Daten durch SQL-Anweisungen verwendet.

Lassen Sie uns zunächst über die spezifische Verwendung von „Ersetzen“ sprechen.

MySQL-Ersetzungsnutzung

1. replace into

Kopieren Sie den Code wie folgt:
Ersetze in Tabelle (ID, Name) Werte('1', 'aa'),('2', 'bb')

Der Zweck dieser Anweisung besteht darin, zwei Datensätze in die Tabelle einzufügen. Wenn die Primärschlüssel-ID 1 oder 2 ist, existiert sie nicht

ist gleichbedeutend mit

in Tabelle einfügen (ID, Name) Werte('1', 'aa'),('2', 'bb')

Wenn der gleiche Wert vorhanden ist, werden die Daten nicht eingefügt.

2. replace(object,search,replace)

Ersetzen Sie alle Vorkommen von Suche im Objekt durch Ersetzen.

Wählen Sie Ersetzen('www.jb51.net','w','Ww')

—>WwWwWw.jb51.net

Beispiel: Ersetzen Sie aa im Namensfeld der Tabelle table durch bb

Tabellensatzname aktualisieren=ersetzen(Name,'aa','bb')

Eine andere von MySQL bereitgestellte Art der Musterübereinstimmung ist die Verwendung erweiterter regulärer Ausdrücke.

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).

Einige Zeichen für erweiterte reguläre Ausdrücke sind:

· „.“ steht für jedes einzelne Zeichen.

· Die Zeichenklasse "[...]" passt zu jedem Zeichen innerhalb der eckigen Klammern. Beispielsweise entspricht „[abc]“ „a“, „b“ oder „c“. Um einen Zeichenbereich zu benennen, verwenden Sie ein "-". „[az]“ entspricht jedem Buchstaben und „[0-9]“ entspricht jeder Ziffer.

· „*“ entspricht keinem oder mehreren der vorangehenden Zeichen. Beispielsweise entspricht „x*“ einer beliebigen Anzahl von „x“-Zeichen, „[0-9]*“ entspricht einer beliebigen Anzahl von Ziffern und „.*“ entspricht einer beliebigen Anzahl von beliebigen Zeichen.

Wenn das REGEXP-Muster irgendwo im getesteten Wert übereinstimmt, stimmt das Muster überein (dies unterscheidet sich vom LIKE-Mustervergleich, der nur übereinstimmt, wenn er mit dem gesamten Wert übereinstimmt).

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, sehen Sie hier die oben gezeigte LIKE-Abfrage, die mit REGEXP umgeschrieben wurde:

1. Um Namen zu finden, die mit „d“ beginnen, verwenden Sie „^“, um den Anfang des Namens abzugleichen:

Wählen Sie * aus master_data.md_employee, wobei Name REGEXP '^d' ist;

Bei solchen Ergebnismengen wird die Groß-/Kleinschreibung nicht beachtet. Wenn Sie beim REGEXP-Vergleich die Groß-/Kleinschreibung beachtet haben möchten, verwenden Sie das Schlüsselwort BINARY, um aus einer der Zeichenfolgen eine Binärzeichenfolge zu machen. Diese Abfrage stimmt nur mit Namen überein, die mit einem kleinen „d“ beginnen.

Wählen Sie * aus master_data.md_employee, wobei Name REGEXP BINARY'^d' ist;

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

Wählen Sie ID, Name aus master_data.md_employee, wobei Name REGEXP "love$" ist.

Um Namen zu finden, die ein „w“ enthalten, verwenden Sie die folgende Abfrage:

Wählen Sie ID, Name aus master_data.md_employee, wobei Name REGEXP "w" ist.

Da ein reguläres Ausdrucksmuster übereinstimmt, wenn es irgendwo in einem Wert vorkommt, müssen Sie in der vorherigen Abfrage nicht auf beiden Seiten des Musters ein Platzhalterzeichen einfügen, damit es mit dem gesamten Wert übereinstimmt, wie Sie es bei Verwendung eines SQL-Musters tun würden.

Um Namen zu finden, die genau aus 5 Zeichen bestehen, verwenden Sie "^" und "$", um den Anfang und das Ende des Namens abzugleichen, und 5 Instanzen von "." dazwischen:

Wählen Sie ID, Name aus master_data.md_employee, wobei Name REGEXP '^.....$' ist.

Sie können die vorherige Abfrage auch mit dem Operator „{n}“ (n-mal wiederholen) neu schreiben:

Wählen Sie ID, Name aus master_data.md_employee, wobei Name REGEXP '^.{5}$' ist.

Dies ist eine einfache Verwendung von MySQL-Ersetzungen und regulären Ausdrücken. Für ein vertieftes Lernen werden wir in den folgenden Artikeln spezifische Beispiele und Verwendungen beschreiben.

PS: Hier sind zwei sehr praktische Tools für reguläre Ausdrücke zu Ihrer Information:

Online-Testtool für reguläre Ausdrücke in JavaScript:
http://tools.jb51.net/regex/javascript

Online-Tool zur Generierung regulärer Ausdrücke:
http://tools.jb51.net/regex/create_reg

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen ansehen: „Zusammenfassung der allgemeinen MySQL-Funktionen“, „Zusammenfassung der Kenntnisse zu MySQL-Protokollvorgängen“, „Zusammenfassung der Kenntnisse zu MySQL-Transaktionsvorgängen“, „Zusammenfassung der Kenntnisse zu gespeicherten MySQL-Prozeduren“ und „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Allgemeine Verwendung von regulären Ausdrücken in MySQL
  • Regulärer Ausdruck (RegExp) bestimmt, ob das Textfeld Sonderzeichen enthält
  • Vollständige Anleitung zur Verwendung von REGEXP-regulären Ausdrücken in MySQL
  • Detaillierte Erklärung zur Verwendung des regulären Ausdrucks regexp_like in Oracle
  • js regulärer Ausdruck Erklärung Index-Attribut (RegExp Objekt)
  • js regulärer Ausdruck RegExp Objektattribute lastIndex, lastMatch, lastParen, lastContext, rightContext Attributerklärung
  • Detaillierte Erklärung des regulären Ausdrucks RegExp, einer neuen Funktion von ES9

<<:  6 Möglichkeiten, die von Linux-Prozessen belegten Portnummern anzuzeigen

>>:  Detaillierte Erläuterung der Implementierung der Titelwiedergabe im WeChat-Applet und der aufgetretenen Fallstricke

Artikel empfehlen

So positionieren Sie die Kopfzeile mithilfe des CSS-Sticky-Layouts oben

Anwendungsszenarien: Eine der neuen Anforderungen...

Zugriffsvorgang im MySQL-Befehlszeilenmodus MySQL-Datenbankvorgang

Nutzungsumgebung Geben Sie im cmd-Modus mysql --v...

Probleme und Lösungen beim Verbinden des Knotens mit der MySQL-Datenbank

Ich habe heute eine neue Version von MySQL (8.0.2...

So realisieren Sie die vertikale Anordnung von Text mit CSS3

In einem aktuellen Projekt wollte ich Text vertik...

Prozessanalyse von reservierten Wortanweisungen in Dockerfile

Inhaltsverzeichnis 1. Was ist Dockerfile? 2. Anal...

Schnelles Verständnis und Beispielanwendung der Vuex-Zustandsmaschine

Inhaltsverzeichnis 1. Schnelles Verständnis von K...

HTML Mehrere spezielle Trennlinieneffekte

1. Grundlinien 2. Spezialeffekte (die Effekte sin...

Was macht die MySQL-Datenbank?

MySQL ist ein relationales Datenbankverwaltungssy...