Risorse per webmaster

L A   C O M U N I T À   V I R T U A L E   I T A L I A N A   P E R   W E B   M A S T E R S

 
 
      Tecnologie
      HTML
      CSS
      DHTML
      FLASH
      ASP
      PHP
      JSP
      PERL
      XML
      SMIL
      WIRELESS
      PALMARI
      APACHE
      MYSQL
      PICOSQL
 
      Grafica
 
      Servizi
 
      Raccolte
 
      Recensioni
 
      Analisi
 
      Disclaimer

   Per tutti
 
  .: Magazine
  .: Editor
  .: Appunti
  .: Gratis
  .: Scripts
  .: Components
 
   Home page

Partner
Comunicati stampa
Proposte di viaggio
Prenotazione hotel
Prenota vacanze
Accessori palmari
Cerca alberghi
Guide turistiche

versione stampabile Mostra una versione adatta per la stampa  

Livello di difficoltà:Livello di difficoltà: medio  
MySQL è il database open source per eccellenza. Cresciuto molto in questi anni, è diventato il DBMS più utilizzato dalla comunità open source e apprezzato anche da chi scrive pagine con tecnologie diverse da PHP e su server diversi da Linux.
 

Le regular expressions con MySQL

MySQL
MySQL supporta l'utilizzo delle Regular Expressions (o espressioni regolari) all'interno delle query.

Per utilizzarle, un esempio di sintassi può essere la seguente:

SELECT * FROM nomeTabella WHERE nomeCampo REGEXP "pattern";

Il pattern include le istruzioni per verificare la regular expression. Sono tanti i caratteri speciali ammessi nell'espressione regolare. Partiamo da un esempio pratico per analizzarli tutti. Ammettiamo di voler cercare tutti quei campi i cui valori iniziano con la lettera "r" e finiscano con la lettera "o". Faremo:

SELECT * FROM nomeTabella WHERE nomeCampo REGEXP "^r.+o$";

Vediamo cosa significano i simboli usati nella query appena vista:
  • ^ che inizia con il carattere successivo
  • . cerca ogni tipo di carattere (anche ritorni a capo)
  • + che siano presenti una o più volte
  • $ che termini con il carattere precedente
In questo modo, i risultati precedenti comprenderanno valori come:
  • roberto
  • Roberto
  • ROBERTO
  • romolo
  • Rho
Ma non stringhe tipo "ro". Perché tra il carattere "r" e "o" ci dovrà essere almeno un altro carattere. Neppure termini come "alrogo" o "arrotare" sarebbero accettati, perché la stringa dovrà iniziare con "r" e finire con "o".

Altri caratteri speciali
Le regular expressions con MySQL supportano comunque altri caratteri speciali. Vediamoli tutti, anche quelli appena analizzati, qui di seguito:
  • ^ che iniziano con il carattere successivo
  • $ che finiscano con il carattere precedente
  • . cerca ogni carattere
  • * il carattere precedente dovrà essere presente 0 (zero) o più volte
  • + il carattere precedente dovrà essere presente 1 (una) o più volte
  • ? il carattere precedente dovrà essere presente 0 (zero) o 1 (una) volta
  • questo|altro cerca la stringa "questo" oppure (OR) la stringa "altro"
  • (parola)* cerca 0 (zero) o più istanze della stringa "parola"
  • a{3,5} il carattere precedente alla { (parentesi graffa), in questo caso "a", dovrà essere presente almeno 3 volte, ma non più di 5 volte
  • [b-eFl] cerca una stringa che contenga le lettere dalla "b" alla "e" (b c d e), e anche la lettera "F" e la lettera "l"
  • [^b-eFl] cerca una stringa che NON contenga le lettere dalla "b" alla "e" (b c d e), e anche la lettera "F" e la lettera "l"
  • "[[:stringa:]] cerca il termine "stringa", preceduto o seguito da qualunque carattere ("questa è una megastringa MySQL" sarebbe accettato)
  • [[:<:]]stringa[[:>:]] cerca il termine "stringa" che sia una parola a sé stante (ovvero separata da ciò che c'è prima e dopo da almeno uno spazio ("questa è una stringa per MySQL" sarebbe accettato ma "questa è una megastringa per MySQL" non sarebbe accettato).
Vediamo qualche esempio pratico:

SELECT "prova" REGEXP "[a-z]";

Restituisce 1 (vero).

SELECT "02800111222" REGEXP "^[0-9]{1,}[0-9]$";

Restituisce 1, ma anche:

SELECT "02800111222" REGEXP "^[0-9]+[0-9]$";

Restituisce 1. Il simbolo + infatti, significa presente una o più volte. I simboli {1,} significano appunto presente almeno 1 (una) volta, e il massimo di volte non è indicato (quindi una o più volte).
 

 
 
Home > mysql > ...   © 1999-2017 Risorse.net, tutti i diritti riservati