Una funzionalità molto interessante e potente in MySQL e altri database è la possibilità di incorporare la sintassi delle espressioni regolari durante la selezione dei dati. Il supporto alle espressioni regolari in MySQL è ampio. Questa ricetta esamina l'uso regolare delle espressioni in MySQL e elenca i metacaratteri delle espressioni regolari supportate.
La sintassi di base per utilizzare le espressioni regolari in una query MySQL è:
SELEZIONA qualcosa FROM table WHERE colonna REGEXP 'regexp'
Ad esempio, per selezionare tutte le colonne dagli eventi della tabella in cui i valori nell'id della colonna terminano con 5587, utilizzare:
SELEZIONA * DA eventi DOVE id REGEXP '5587 $'
Un esempio più elaborato seleziona tutte le colonne delle revisioni delle tabelle in cui i valori nella descrizione della colonna contengono la parola eccellente:
SELEZIONA * DA recensioni DOVE descrizione REGEXP '[[::]]'
MySQL consente i seguenti metacaratteri di espressioni regolari:
. abbinare qualsiasi carattere
? corrisponde a zero o uno
* corrisponde a zero o più
+ abbina uno o più
{n} corrisponde n volte
{m, n} corrispondono a n volte
{n,} abbina n o più volte
^ inizio della linea
$ fine linea
[[::]] corrisponde alla fine delle parole
[: class:] corrisponde a una classe di caratteri
cioè, [: alpha:] per le lettere
[: space:] per gli spazi bianchi
[: punct:] per la punteggiatura
[: upper:] per lettere maiuscole
[abc] corrisponde a uno dei caratteri inclusi
[^ xyz] corrisponde a qualsiasi carattere non incluso
| separa le alternative
MySQL interpreta un carattere backslash (\) come carattere di escape. Per utilizzare una barra rovesciata in un'espressione regolare, è necessario sfuggirla con un'altra barra rovesciata (\).