Latest web development tutorials

MySQL espressioni regolari

Nel paragrafo precedente abbiamo appreso attraverso il MySQL COME ...% per corrispondenza fuzzy.

MySQL supporta anche altri corrispondenza di espressione regolare, MySQL operatore REGEXP utilizzare corrispondenza di espressioni regolari.

Se si conosce PHP o Perl, allora l'operazione è molto semplice, perché MySQL espressione regolare corrispondenza simile a questi script.

Nella tabella seguente modalità normale può essere utilizzato nell'operatore REGEXP.

modo descrizione
^ Corrisponde all'inizio della stringa. Se si imposta la proprietà MultiLine dell'oggetto RegExp, ^ partite anche '\ n' posizione o '\ r' dopo.
$ Partita la fine di ingresso della stringa. Se si imposta l'oggetto di proprietà RegExp multilinea, anche corrispondenza $ posizione '\ n' o '\ r' prima.
. Corrisponde a qualsiasi carattere singolo tranne "\ n" è. Per far corrispondere tra cui '\ n', tra cui tutti i caratteri, come l'uso di '[. \ N]' modalità.
[...] Set di caratteri. Corrisponde a qualsiasi carattere incluso. Per esempio, '[abc]' corrisponde a "pianura" nella 'a'.
[^ ...] set di caratteri negativo. Corrisponde a qualsiasi carattere che non è incluso. Per esempio, '[^ abc]' partite "pianura" nella 'p'.
p1 | p2 | p3 Partita p1, p2, p3 o. Per esempio, 'z | cibo' in grado di abbinare la "z" o "cibo". '(Z | f) ood' corrisponderà "zood" o "cibo".
* Partite precedenti subexpression zero o più volte. Ad esempio, zo * può abbinare il "z" e "zoo". * Equivalente a {0,}.
+ Partite precedenti subexpression una o più volte. Ad esempio, "zo + 'corrisponderà" zo "e" zoo ", ma non può competere con la" z ". + È equivalente a {1}.
{N} n è un numero intero non negativo. Corrispondenti ai n volte determinati. Per esempio, 'O {2}' non corrisponde al "Bob" nel 'o', ma può abbinare il "cibo" nei due o.
{N, m} m e n sono numeri interi non negativi, dove n <= m. Partita almeno n volte e abbinare fino a m volte.

Esempi

Una volta che sai esigenze più regolare, possiamo essere più alle proprie esigenze di scrivere SQL con un'espressione regolare. Di seguito elencheremo alcuni piccoli esempi (nome della tabella: person_tbl) per approfondire la nostra comprensione:

Trovate tutti il ​​nome del campo di dati a 'st' inizio con:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

Trovate tutti il ​​nome del campo di dati a 'OK' per il finale:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

Trovare un campo nome contiene stringhe tutti i dati 'Mar':

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

Trovare un campo di nome per cominciare le vocali e con finale 'ok' della stringa di tutti i dati:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';