Directory articoli
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.
| modo | Descrizione |
|---|---|
| ^ | 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|p3 | Corrisponde 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$';
Speriamo che l'articolo "Come trovare corrispondenze utilizzando le espressioni regolari in un database MySQL? Utilizzo di MySQL regexp like" condiviso sul blog di Chen Weiliang ( https://www.chenweiliang.com/ ) possa esservi utile.
Sentitevi liberi di condividere il link di questo articolo: https://www.chenweiliang.com/cwl-492.html
