Le funzioni SUBSTRING(), LEFT(), RIGHT(), MID()
Gli argomenti di questa pagina
|
Definizione della funzione SUBSTRING()
La funzione SUBSTRING() restituisce un numero specificato di caratteri da una particolare posizione di una determinata stringa.
La sintassi per la funzione MYSQL SUBSTRING()
oppure
SUBSTRING(str FROM pos FOR len)
In questa sintassi:
string è la stringa in oggetto
pos indica la posizione da cui iniziare l'estrazione: se pos è positivo la posizione si conta dall'inizio della stringa, se negativo la posizione si conta dalla fine della stringa
len, facoltativo, indica il numero di caratteri da prelevare, se omesso vengono prelevati tutti i caratteri dalla posizione indicata fino alla fine della stringa.
Alcuni esempi sull'uso di della funzione SUBSTRING()
In questi esempi viene estratta una sottostringa di lunghezza len, opzionale, a partire dalla posizione pos della stringa contenuta nel campo 'body'.
Per non allungare troppo l'elenco dei record visualizzati abbiamo stabilito, tramite la clausola WHERE, di mostrare solo un record.
Prelevare una sottostringa di 24 caratteri a partire dalla posizione 140
esempio 1
|
1 record letti
|
Se viene omesso il secondo parametro richiesto dalla funzione, viene prelevata una sottostriga a partire dalla posizione indicata dall'argomento pos.
Prelevare una sottostringa a partire dalla posizione 140 fino alla fine della stringa in esame
esempio 2
|
1 record letti
|
Questa Query si può scrivere anche con quest'altra sintassi: il FROM che si trova dopo il nome del campo 'body' indica da quale carattere iniziare a prelevare la sottostringa.
In questo esempio inizia ancora dalla posizione 140.
esempio 2A
|
1 record letti
|
Oltre che nelle due versioni appena viste è possibile usare un numero negativo per indicare di estrarre 46 caratteri a partire dalla fine della stringa
esempio 3
|
1 record letti
|
In questo esempio viene usato il numero negativo -46 ma, anzichè prelevare tutto dal 46° carattere, prelevo solo 8 caratteri.
Prelevare una sottostringa di 8 caratteri a partire dalla posizione 46.
esempio 4
|
1 record letti
|
Per rispondere alla stessa richiesta è possibile usare FROM per indicare da dove e FOR per indicare il numero di caratteri da prelevare.
Prelevare una sottostringa di 8 caratteri a partire dal carattere 46.
esempio 4A
|
1 record letti
|
In questa funzione, come in tutte le funzioni, i vari argomento vanno separati da una virgola:
SUBSTRING(str, pos, len)
Quando si usano le keyword FROM e FOR, non viene usata nessuna virgola:
SUBSTRING( str FROM pos FOR len ), proprio come in una frase parlata.
Altre funzioni assimilabili: LEFT(), RIGHT(), MID()
Altre funzioni assimilabili alla funzione SUBSTRING() usate per estrarre porzioni di stringhe sono: LEFT(), RIGHT(), MID().
LEFT() restituisce len caratteri a cominciare dalla sinistra della stringa
RIGHT() restituisce len caratteri a partire dalla destra della stringa
MID() restituisce len caratteri a partire da pos. Se len è omesso, vengono restituiti tutti i caratteri a partire da pos fino alla fine della stringa
Negli esempi che seguono facciamo riferimento anche alla funzione SUBSTRING() che che equivale alla tripletta di funzioni LEFT(), RIGHT(), MID(). Eccoli qui di seguito.
Sintassi per la funzione MYSQL LEFT()
string indica la stringa in esame
length indica quanti caratteri prelevare
Prelevare i primi 21 caratteri di una stringa.
Funzione MYSQL LEFT()
|
1 record letti
|
Sintassi per la funzione MYSQL RIGHT()
string indica la stringa in esame
length indica quanti caratteri prelevare
Prelevare gli ultimi 11 caratteri di una stringa.
Funzione MYSQL RIGHT()
|
1 record letti
|
Sintassi per la funzione MYSQL MID()
string indica la stringa in esame
pos indica la posizione da cui iniziare il prelievo della sottostringa
length indica quanti caratteri prelevare
Prelevata una una stringa di 15 caratteri a partire dalla posizione 37.
Funzione MYSQL RIGHT()
|
1 record letti
|
Esempio finale: SUBSTRING e LEFT a confronto
Come ultimo esempio usiamo questo che lavora con una vera tabella del DB. Le due Query usano le funzioni SUBSTRING() e LEFT() nella clausola WHERE per accettare solo record che soddisfano i requisiti imposti dalla clausola WHERE.
Mostrare i contatti il cui codice inizia con '003' (due esempi)
esempio pratico
|
4 record trovati 4 record visualizzati
|
4 record trovati 4 record visualizzati
|