PostgreSQL è un popolare database relazionale open source con una solida reputazione per la sua affidabilità, flessibilità e supporto per gli standard tecnici aperti. Supporta i tipi di dati relazionali e non relazionali, rendendolo uno dei database relazionali più conformi, stabili e maturi.
In questa guida, ci immergeremo in profondità nell'uso di Regex con PostgreSQL.
Prerequisiti:
Per eseguire i passaggi dimostrati in questa guida, sono necessari i seguenti componenti:
Regex e PostgreSQL
A breve termine per espressione regolare, Regex è una stringa di testo che descrive un modello per abbinare, individuare e gestire il testo. È uno strumento versatile è supportato da molti linguaggi di programmazione (Perl, Python, Java, Kotlin, Scala, Go, C ++ ecc.) e strumenti (awk, sed, nginx, grep/egrep e altro).
PostgreSQL utilizza le espressioni regolari di Posix che possono funzionare meglio delle query come COME E SIMILE A operatori.
Database demo
Per scopi dimostrativi, lavoreremo con un database fittizio che è popolato con voci fittizie.
Connettersi al server PostgreSQL locale come Postgres:
$ sudo -i -u postgres psql
Dalla shell PostgreSQL, crea un database fittizio chiamato demo_db:
$ Crea database demo_db;
Passa al nuovo database:
$ \ c demo_db
Crea una nuova tabella:
Crea utenti di tabelle (
Chiave primaria seriale ID,
Nome testo non null,
Testo e -mail);
Quindi, popola la tabella con alcuni valori:
Inserisci i valori degli utenti (nome, e -mail)
("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] ')
;
Controlla il contenuto della tabella aggiornata:
$ Seleziona * dagli utenti;
Operatori di corrispondenza di PostgreSQL
Ecco un breve elenco di vari operatori di regex PostgreSQL per la corrispondenza dei motivi:
Esempio 1: un'introduzione
Iniziamo il nostro viaggio con l'espressione regolare di PostgreSQL con il seguente esempio:
$ Seleziona * dagli utenti dove email ~ '^.*$ ';
Qui:
Tutti questi operatori insieme, “^.*$ ", Indica una stringa che inizia con qualsiasi personaggio e finisce con qualsiasi stringa.
Esempio 2: Case Sensibile
Per impostazione predefinita, l'operatore Tilde (~) è sensibile alla maiuscolo. Possiamo dimostrare questa proprietà usando le seguenti domande:
$ Seleziona * da utenti dove email ~ 'esempio';
$ Seleziona * da utenti dove email ~ 'esempio';
Esempio 3: caso insensibile
Se vogliamo eseguire le operazioni di insensibile al caso, dobbiamo includere l'operatore asterisco (*) insieme all'operatore Tilde (~).
$ Seleziona * da utenti dove email ~ * 'esempio';
$ Seleziona * da utenti dove email ~ * 'esempio';
Dal momento che abbiamo specificato l'interpretazione insensibile al caso dell'espressione regolare, entrambe le query restituiscono lo stesso output.
Esempio 4: Invert Match
Per impostazione predefinita, le espressioni regolari corrispondono al modello specificato.
Dai un'occhiata alla seguente domanda:
$ Seleziona * dagli utenti dove e -mail !~ 'Esempio';
$ Seleziona * dagli utenti dove e -mail !~ 'Esempio';
Qui:
Per eseguire la corrispondenza invertibile insensibile al caso, usa "!~*"Operatore invece:
$ Seleziona * dagli utenti dove e -mail !~* 'Esempio';
$ Seleziona * dagli utenti dove e -mail !~* 'Esempio';
Esempio 5: filtrare i dati entro la fine della stringa
Esegui la seguente domanda:
$ Seleziona * dagli utenti in cui e -mail ~ * 'com $';
Qui:
Esempio 6: filtrare i dati entro l'inizio della stringa
Guarda la seguente domanda:
$ Seleziona * dagli utenti in cui e -mail ~ * '^m';
Qui:
Esempio 7: dati di tipo numerico
Possiamo anche usare l'espressione regolare per specificare le voci di ricerca che contengono cifre. La seguente query lo dimostra perfettamente:
$ Seleziona * dagli utenti in cui e-mail ~ '[0-9]';
In questa query, utilizziamo la funzione Classe di caratteri dell'espressione regolare. Fondamentalmente, è un modo di scegliere tra le classi di personaggi. Ad esempio, [0-9] è una rappresentazione della classe dei caratteri delle cifre.
Per riferimento, ecco un breve elenco di varie classi di carattere di espressione regolari:
Funzioni di regex postgresql
Oltre all'espressione regolare di Posix, PostgreSQL include anche varie funzioni specifiche per regex. Questa sezione mostra queste funzioni con esempi.
Regexp_replace ()
La sintassi del Regexp_replace () La funzione è la seguente:
$ Regexp_replace (
Qui:
Mettiamo la funzione in azione:
$ Seleziona regexp_replace ('ABC123xyz', '[a-za-z]', ", 'g');
Possiamo anche distribuire il Regexp_replace () per lavorare sulle stringhe dalle voci del database:
$ Seleziona regexp_replace (email, '[0-9]', '*', 'g') dagli utenti;
Come indicato, la funzione sostituisce tutte le cifre da tutte le voci nella colonna e -mail con un asterisco (*).
Regexp_matches ()
Come suggerisce il nome della funzione, Regexp_matches () viene utilizzato per trovare tutte le istanze del modello in una determinata stringa. La sintassi della funzione è la seguente:
$ Regexp_matches (
Qui:
Dai un'occhiata al seguente esempio:
$ Seleziona regexp_matches ("The Quick Brown Fox", "The", "G");
Notare che Regexp_matches () Stampa l'output come set.
Successivamente, filtriamo i dati dal nostro database:
$ Seleziona regexp_matches (email, ".+@(.*) $ ') Dagli utenti;
L'output è un insieme di tutti i domini univoci degli indirizzi e -mail.
Substring ()
IL Substring () La funzione restituisce una parte di una determinata stringa. La sottostringa viene generata in base ai parametri dati.
La sintassi del Substring () La funzione è la seguente:
$ Substring (, , )
Qui:
I seguenti esempi dimostrano il comportamento del Substring () funzione perfettamente:
$ Select substring ("The Quick Brown Fox", 6, 9);
$ Select substring ("The Quick Brown Fox", 6);
Possiamo anche utilizzare questa funzione per manipolare i dati estratti dal database:
$ Seleziona sottostringa distinta (e -mail da '.+@(.*) $ ') Dagli utenti;
L'output stampa tutti i domini univoci degli indirizzi e -mail come elenco di sottostringi.
Split_part ()
IL Split_part () La funzione prende una stringa e la divide in parti diverse. La sintassi della funzione è la seguente:
$ Split_part (, , );
Qui:
Dai un'occhiata al Split_part () funzione in azione:
$ Select split_part ('a, b, c, d, e', ',', 4);
$ Select split_part ('a, b, c, d, e', ',', 2);
Nel seguente esempio, usiamo il Split_part () Per dividere gli indirizzi e -mail e prendere il dominio:
$ Select split_part (email, '@', 2) dagli utenti;
Conclusione
In questa guida, abbiamo fatto un tutorial approfondito sull'uso dell'espressione regolare per costruire le istruzioni SQL e filtrare i dati su PostgreSQL. L'uso dell'espressione regolare consente molto più flessibilità rispetto agli altri metodi stabiliti. Ad esempio, usando il COME operatore.
Oltre all'implementazione di base, abbiamo anche dimostrato l'uso di Regex in varie altre funzioni PostgreSQL per migliorare notevolmente la loro funzionalità. In effetti, puoi anche implementare l'espressione regolare sulle funzioni definite dall'utente.
Interessato a saperne di più? La sottocategoria PostgreSQL contiene centinaia di guide e tutorial sulle varie caratteristiche di PostgreSQL.