back to top

MySQL REGEXP: espressioni regolari nelle query con MySQL

Il motore interno di MySQL possiede nativamente – oltre ai comuni operatori di uguaglianza, disuguaglianza e similitudine (LIKE) – un operatore molto utile: l’operatore REGEXP. Come il suo nome suggerisce, l’operatore REGEXP sfrutta la potenza delle espressioni regolari per effettuare ricerche complesse all’interno dei nostri database MySQL. La sintassi รจ semplicissima:

SELECT nome_campo
FROM nome_tabella
WHERE nome_campo REGEXP espressione;

In questo articolo, esploreremo come utilizzare l’operatore REGEXP, i principali caratteri speciali e forniremo esempi pratici per capire come possa semplificare le nostre interrogazioni nei database.

Pubblicitร 

Vediamo di seguito una semplice tabella riassuntiva dei principali caratteri speciali e delle sintassi utilizzabili nell’espressione di raffronto:

^Inizio della stringa
$Fine della stringa
.Un qualsiasi carattere
[…]Uno qualsiasi dei caratteri presenti tra le parentesi quadre
[^…]Un qualsiasi carattere tranne quelli presenti tra le parentesi quadre
|Separa caratteri o stringhe tra loro alternative
*Zero o piรน ripetizioni del carattere o della stringa precedente
+Una o piรน ripetizioni del carattere o della stringa precedente
{n}“n” ripetizioni del carattere o della stringa precedente
{min,max}Ripete il carattere o la stringa precedente per un numero di volte comprese tra un minimo ed un massimo

Facciamo qualche esempio pratico che, come al solito, vale piรน di mille parole. Per semplicitร , faremo riferimento ad un ipotetico database agenda contenente i nomi dei nostri amici.

Esempi di utilizzo di REGEXP

1) Troviamo tutti i nomi che iniziano per “m”

SELECT nome FROM agenda WHERE nome REGEXP '^m';

La nostra query restituirร , ad esempio:

  • Mara
  • Marco
  • Mario
  • Milena

2) Troviamo tutti i nomi che finiscono per “o”

SELECT nome FROM agenda WHERE nome REGEXP 'o$';

La nostra query restituirร , ad esempio:

  • Filippo
  • Lucio
  • Marco
  • Mario
  • Paolo

3) Troviamo tutti i nomi che iniziano per “m” e finiscono per “o”

SELECT nome FROM agenda WHERE nome REGEXP '^m.+o$';

La nostra query restituirร , ad esempio:

  • Marco
  • Mario

4) Troviamo tutti i nomi che contengono la lettera “r”

SELECT nome FROM agenda WHERE nome REGEXP 'r';

La nostra query restituirร , ad esempio:

  • Clara
  • Mara
  • Marco
  • Mario

5) Troviamo tutti i nomi che contengono i gruppi di lettere “ma” o “io”

SELECT nome FROM agenda WHERE nome REGEXP 'ma|io';

La nostra query restituirร , ad esempio:

  • Lucio
  • Mara
  • Marco
  • Mario

6) Troviamo tutti i nomi che NON contengono le lettere “m” e “a”

SELECT nome FROM agenda WHERE nome REGEXP '^[^ma]*$';

La nostra query restituirร , ad esempio:

  • Filippo
  • Lucio

Lascio al lettore il compito di testare ulteriormente le potenzialitร  dell’operatore REGEXP, dato che i possibili ambiti di utilizzo sono davvero tanti ed รจ difficile riassumerli in un breve articolo quale questo vuol essere. Sperimentando, รจ possibile scoprire altre combinazioni e applicazioni delle espressioni regolari che possono semplificare notevolmente il lavoro con i dati in MySQL.

Altri contenuti interessanti

Pubblicitร 

Potrebbero interessarti queste guide

Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Come ottenere l’ID dell’ultimo record inserito in MySQL, PostgreSQL, SQL Server e Oracle?

Ottenere l'ID dell'ultimo record inserito in una tabella, dopo...

Database completo regioni, province e comuni italiani (in formato SQL)

Quando si sviluppa un sito web o un'applicazione in...

File CSV: cosa sono, come si aprono e come crearli

In questo articolo cercheremo di capire cos'รจ il formato...

Confrontare due tabelle e trovare i record senza corrispondenza

all'interno di un database relazionale può essere utile poter...

Eseguire comandi SQL online con SQL Fiddle

Sì. E' possibile testare codice SQL senza aver installato...

SQL: Calcolare la media dei valori di più campi

Attraverso una semplice query SQL รจ possibile calcolare dinamicamente...
Pubblicitร