Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Espressioni regolari nelle query con MySQL

Articolo scritto da Max Bossi

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

1) Troviamo tutti i nomi che iniziano per "m"

SELECT nome FROM agenda WHERE nome REGEXP '^m';
La nostra query restituirà, ad esempio: 2) Troviamo tutti i nomi che finiscono per "o"
SELECT nome FROM agenda WHERE nome REGEXP 'o$';
La nostra query restituirà, ad esempio: 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: 4) Troviamo tutti i nomi che contengono la lettera "r"
SELECT nome FROM agenda WHERE nome REGEXP 'r';
La nostra query restituirà, ad esempio: 5) Troviamo tutti i nomi che contengono i gruppi di lettere "ma" o "io"
SELECT nome FROM agenda WHERE nome REGEXP 'ma|ra';
La nostra query restituirà, ad esempio: 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: 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.

Corsi
Corso MS AccessCorso MS Access
Impara a creare e gestire database in maniera semplice e veloce. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso SQL e DatabaseCorso SQL e Database
Creazione e gestione di database relazionali. A partire da 39 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122