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 installieren Sie die PHP7 Redis-Erweiterung auf CentOS7

Einführung Im vorherigen Artikel haben wir Redis ...

Praktische TypeScript-Tipps, die Sie vielleicht nicht kennen

Inhaltsverzeichnis Vorwort Funktionsüberladung Zu...

So verstehen Sie SELinux unter Linux

Inhaltsverzeichnis 1. Einführung in SELinux 2. Gr...

Was bedeutet das n nach int(n) in MySQL?

Sie wissen vielleicht bereits, dass die Länge 1 v...

So ändern Sie den Hostnamen in Linux

1. Den aktuellen Hostnamen anzeigen [root@fangjia...

Der Unterschied zwischen ${param} und #{param} in MySQL

Der von ${param} übergebene Parameter wird als Te...

DOCTYPE Dokumenttypdeklaration (unbedingt lesenswert für Webseiten-Liebhaber)

DOCTYPE-DEKLARATION: Oben auf jeder Seite, die Sie...

Tutorial zur Installation und Kennwortkonfiguration von MySQL 5.7.21

Tutorial zur Installation und Kennworteinstellung...

Detaillierte Erläuterung der Vue-Projektverpackung

Inhaltsverzeichnis 1. Zugehörige Konfiguration Fa...

Docker richtet Port-Mapping ein, kann aber nicht auf die Lösung zugreifen

#docker ps-Check, alle Ports sind zugeordnet CONT...