Come corrispondono le espressioni regolari del database MySQL? MySQL regexp come l'utilizzo

Come eseguire la corrispondenza con espressioni regolari in un database MySQL ? Come utilizzare le espressioni regolari in MySQL?

Espressioni regolari MySQL

Nei capitoli precedenti abbiamo appreso che MySQL può utilizzare LIKE …% per la corrispondenza approssimativa.

MySQL supporta anche la corrispondenza di altre espressioni regolari.L'operatore REGEXP viene utilizzato in MySQL per la corrispondenza delle espressioni regolari.

Se conosci PHP o Perl, è abbastanza semplice, poiché la corrispondenza delle espressioni regolari di MySQL è simile a quelle di questi script.

I modelli regolari nella tabella seguente possono essere applicati all'operatore REGEXP.

modoDescrizione
^Corrisponde all'inizio della stringa di input.^ corrisponde anche alla posizione dopo '\n' o '\r' se è impostata la proprietà Multiline dell'oggetto RegExp.
$Corrisponde alla fine della stringa di input.Se è impostata la proprietà Multiline dell'oggetto RegExp, $ corrisponde anche alla posizione prima di '\n' o '\r'.
.Corrisponde a qualsiasi singolo carattere tranne "\n".Per trovare la corrispondenza con qualsiasi carattere incluso '\n', utilizza uno schema come '[.\n]'.
[...]raccolta di caratteri.Corrisponde a uno qualsiasi dei caratteri contenuti.Ad esempio, '[abc]' corrisponderebbe a "plai'a' in n".
[^…]Set di caratteri negativi.Corrisponde a qualsiasi carattere non contenuto.Ad esempio, '[^abc]' corrisponderebbe a 'p' in "plain".
p1|p2|p3Corrisponde a p1 o p2 o p3.Ad esempio, 'z|food' corrisponderebbe a "z" o "food". '(z|f)ood' corrisponde a "zood" o "cibo".
*Corrisponde alla sottoespressione precedente zero o più volte.Ad esempio, zo* corrisponderebbe sia a "z" che a "zoo". * equivale a {0,}.
+Corrisponde alla sottoespressione precedente una o più volte.Ad esempio, 'zo+' corrisponderebbe a "zo" e "zoo", ma non a "z". + equivale a {1,}.
{non}n è un numero intero non negativo.Corrisponde esattamente n volte.Ad esempio, 'o{2}' non corrisponderebbe alla 'o' in "Bob", ma corrisponderebbe a entrambe le o in "food".
{m}Sia m che n sono interi non negativi, dove n <= m.Corrisponde almeno n volte e al massimo m volte.

Esempio

Dopo aver compreso i requisiti regolari di cui sopra, possiamo scrivere istruzioni SQL con espressioni regolari in base ai nostri requisiti.Di seguito elencheremo alcuni piccoli esempi (nome tabella: person_tbl ) per approfondire la nostra comprensione:

Trova tutti i dati che iniziano con 'st' nel campo del nome:

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

Trova tutti i dati che terminano con "ok" nel campo del nome:

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

Trova tutti i dati contenenti la stringa 'mar' nel campo del nome:

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

Trova tutti i dati nel campo del nome che inizia con un carattere vocale o termina con la stringa 'ok':

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

发表 评论

您的邮箱地址不会被公开.必填项已用*标注

Scorrere fino a Top