PostgreSQL ist eine beliebte Open-Source-relationale Datenbank mit einem soliden Ruf für die Zuverlässigkeit, Flexibilität und Unterstützung für offene technische Standards. Es unterstützt sowohl relationale als auch nicht-relationale Datentypen und macht es zu einer der konform, stabilsten und reifen relationalen Datenbanken.
In diesem Leitfaden werden wir tief in die Verwendung von Regex mit PostgreSQL eintauchen.
Voraussetzungen:
Um die nachgewiesenen Schritte in diesem Handbuch auszuführen, benötigen Sie die folgenden Komponenten:
Regex und postgresql
Eine kurzfristige für regulären Ausdruck, Regex ist eine Textfolge, die ein Muster beschreibt, das den Text übereinstimmt, lokalisiert und verwaltet. Es ist ein vielseitiges Tool, das von vielen Programmiersprachen unterstützt wird (Perl, Python, Java, Kotlin, Scala, Go, C ++ usw.) und Werkzeuge (awk, sed, nginx, grep/eGrep und mehr).
PostgreSQL verwendet die regulären Ausdrücke von POSIX, die besser funktionieren können als Abfragen wie WIE Und ÄHNLICH ZU Betreiber.
Demo -Datenbank
Für Demonstrationszwecke arbeiten wir mit einer Dummy -Datenbank, die mit Dummy -Einträgen besiedelt ist.
Stellen Sie eine Verbindung zum lokalen PostgreSQL -Server her Postgres:
$ sudo -i -u postgres psql
Erstellen Sie aus der Postgresql -Shell eine Dummy -Datenbank mit dem Namen Demo_DB:
$ Create Database Demo_DB;
Wechseln Sie zur neuen Datenbank:
$ \ c Demo_DB
Erstellen Sie eine neue Tabelle:
Tabellenbenutzer erstellen (Benutzer
Id serielle Primärschlüssel,
Nennen Sie Text nicht null,
E -Mail -Text);
Als nächstes bevölkern Sie die Tabelle mit einigen Werten:
Einfügen in Benutzer (Name, E -Mail) Werte
('James', '[email protected] '),
('Mary', '[email protected] ')),
('Robert', '[email protected] '),
('Patricia', [email protected] ')),
('Michael', '[email protected] '),
('David', '[email protected] ')),
('Richard', '[email protected] '),
('Elizabeth', [email protected] '),
('Lisa', '[email protected] ')),
('Charles', '[email protected] '))
;
Überprüfen Sie den Inhalt der aktualisierten Tabelle:
$ Select * von Benutzern;
PostgreSQL Match -Operatoren
Hier finden Sie eine kurze Liste verschiedener Postgresql Regex -Operatoren für Musteranpassungen:
Beispiel 1: Eine Einführung
Beginnen wir unsere Reise mit dem regulären Ausdruck nach Postgresql mit dem folgenden Beispiel:
$ SELECT * von Benutzern, wobei E -Mail ~ '^.*$ ';
Hier:
Alle diese Operatoren zusammen: „^.*$ ”, Bezeichnen eine Zeichenfolge, die mit beginnt Jeder Charakter und endet mit Jede Zeichenfolge.
Beispiel 2: Fallempfindlichkeit
Standardmäßig ist der Tilde (~) Operator Fall sensibel. Wir können diese Eigenschaft mit den folgenden Fragen demonstrieren:
$ SELECT * von Benutzern, wobei E -Mail ~ 'Beispiel';
$ SELECT * von Benutzern, wobei E -Mail ~ 'Beispiel';
Beispiel 3: Fall unempfindlich
Wenn wir die von Fall unempfindlichen Operationen ausführen möchten, müssen wir den Sternchen (*) Operator zusammen mit dem Tilde (~) Operator (~) einbeziehen.
$ SELECT * von Benutzern, wobei E -Mail ~ * 'Beispiel';
$ SELECT * von Benutzern, wobei E -Mail ~ * 'Beispiel';
Da wir die von der Fall unempfindliche Interpretation des regulären Ausdrucks angegeben haben, geben beide Abfragen dieselbe Ausgabe zurück.
Beispiel 4: Invert -Match
Standardmäßig stimmen reguläre Ausdrücke dem angegebenen Muster überein.
Schauen Sie sich die folgende Anfrage an:
$ Ausgewählt * von Benutzern, wobei E -Mails !~ 'Beispiel';
$ Ausgewählt * von Benutzern, wobei E -Mails !~ 'Beispiel';
Hier:
Verwenden Sie die „Fall-unempfindliche Invert-Übereinstimmung durch, um die von Fall zu tun, um die“ zu verwenden!~*”Operator stattdessen:
$ Ausgewählt * von Benutzern, wobei E -Mails !~* 'Beispiel';
$ Ausgewählt * von Benutzern, wobei E -Mails !~* 'Beispiel';
Beispiel 5: Filtern Sie die Daten bis zum Ende der Zeichenfolge
Führen Sie die folgende Anfrage aus:
$ Select * von Benutzern, wobei E -Mail ~ * 'com $';
Hier:
Beispiel 6: Filtern Sie die Daten bis zum Beginn der Zeichenfolge
Schauen Sie sich die folgende Anfrage an:
$ SELECT * von Benutzern, wobei E -Mail ~ * '^M';
Hier:
Beispiel 7: Daten vom Typ Zifferblatt
Wir können auch den regulären Ausdruck verwenden, um die Befundeinträge anzugeben, die Ziffern enthalten. Die folgende Abfrage zeigt es perfekt:
$ SELECT * von Benutzern, wobei E-Mail ~ '[0-9]';
In dieser Abfrage verwenden wir die Charakterklassenfunktion des regulären Ausdrucks. Grundsätzlich ist es eine Abkürzung, bestimmte Charakterklassen darzustellen. Zum Beispiel ist [0-9] eine Darstellung der Zifferncharakterklasse.
Als Referenz finden Sie hier eine kurze Liste verschiedener regulärer Ausdruckscharakterklassen:
PostgreSQL Regex -Funktionen
Neben dem regulären Ausdruck von POSIX verfügt PostgreSQL auch mit verschiedenen regexspezifischen Funktionen. Dieser Abschnitt zeigt diese Funktionen mit Beispielen.
Regexp_replace ()
Die Syntax der Regexp_replace () Funktion ist wie folgt:
$ Regexp_replace (
Hier:
Setzen wir die Funktion in Aktion ein:
$ Select regexp_replace ('abc123xyz', '[a-za-z]', ',' g ');
Wir können auch die bereitstellen Regexp_replace () Um an Strings aus Datenbankeinträgen zu arbeiten:
$ Wählen Sie regexp_replace (E-Mail, '[0-9]', '*', 'G') von Benutzern;
Wie angewiesen, ersetzt die Funktion alle Ziffern aller Einträge unter der E -Mail -Spalte durch ein Sternchen (*).
Regexp_matches ()
Wie der Name der Funktion vorschlägt, Regexp_matches () wird verwendet, um alle Instanzen des Musters in einer bestimmten Zeichenfolge zu finden. Die Funktionssyntax ist wie folgt:
$ Regexp_matches (
Hier:
Schauen Sie sich das folgende Beispiel an:
$ Select regexp_matches ('The Quick Brown Fox', 'The', 'G');
Beachten Sie, dass Regexp_matches () druckt die Ausgabe als Set.
Als nächstes filtern wir die Daten aus unserer Datenbank:
$ Wählen Sie regexp_matches (E -Mail, '.+@(.*) $ ') Von Benutzern;
Die Ausgabe ist ein Satz aller eindeutigen Domänen der E -Mail -Adressen.
Substring ()
Der Substring () Funktion gibt einen Teil einer bestimmten Zeichenfolge zurück. Das Substring wird basierend auf den angegebenen Parametern erzeugt.
Die Syntax der Substring () Funktion ist wie folgt:
$ Substring (, , )
Hier:
Die folgenden Beispiele zeigen das Verhalten der Substring () perfekt funktionieren:
$ SELECT Substring ('The Quick Brown Fox', 6, 9);
$ SELECT Substring ('The Quick Brown Fox', 6);
Wir können diese Funktion auch nutzen, um die Daten aus der Datenbank zu manipulieren:
$ Wählen Sie eindeutiges Substring (E -Mail von '.+@(.*) $ ') Von Benutzern;
Die Ausgabe druckt alle eindeutigen Domänen der E -Mail -Adressen als eine Liste von Substrings aus.
Split_part ()
Der Split_part () Funktion nimmt eine Zeichenfolge und spaltet sie in verschiedene Teile auf. Die Syntax der Funktion lautet wie folgt:
$ Split_part (, , );
Hier:
Besuche die Split_part () Funktion in Aktion:
$ Select split_part ('a, b, c, d, e', ',', 4);
$ Select split_part ('a, b, c, d, e', ',', 2);
Im folgenden Beispiel verwenden wir die Split_part () So teilen Sie die E -Mail -Adressen und schnappen Sie sich die Domain:
$ Wählen Sie split_part (E -Mail, '@', 2) von Benutzern;
Abschluss
In diesem Leitfaden haben wir ein detailliertes Tutorial über die Verwendung des regulären Ausdrucks zur Erstellung der SQL. Die Verwendung eines regulären Ausdrucks ermöglicht weitaus mehr Flexibilität als die anderen etablierten Methoden. Zum Beispiel die Verwendung der WIE Operator.
Neben der grundlegenden Implementierung haben wir auch die Verwendung von Regex in verschiedenen anderen PostgreSQL -Funktionen gezeigt, um ihre Funktionalität erheblich zu verbessern. Tatsächlich können Sie auch den regulären Ausdruck auf benutzerdefinierten Funktionen implementieren.
Interessiert, mehr zu lernen? Die PostgreSQL-Unterkategorie enthält Hunderte von Leitfäden und Tutorials zu den verschiedenen Merkmalen von PostgreSQL.