Le funzioni SUBSTRING(), LEFT(), RIGHT(), MID()

Gli argomenti di questa pagina

  • Definizione della funzione SUBSTRING()
  • La sintassi per la funzione MYSQL SUBSTRING()
  • Alcuni esempi sull'uso di della funzione SUBSTRING()
  • Altre funzioni assimilabili: LEFT(), RIGHT(), MID()
  • Sintassi per la funzione MYSQL LEFT()
  • Sintassi per la funzione MYSQL RIGHT()
  • Sintassi per la funzione MYSQL MID()
  • Esempio finale: SUBSTRING e LEFT a confronto

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()

SUBSTRING(string, pos, [len])
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
2
3
4
5
6

SELECT body, 
SUBSTRING( body, 140 , 24 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). alla funzione readdir()

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
2
3
4
5
6

SELECT body, 
SUBSTRING( body, 140 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). alla funzione readdir() e alla funzione closedir().

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
2
3
4
5
6

SELECT body, 
SUBSTRING( body FROM 140 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). alla funzione readdir() e alla funzione closedir().

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
2
3
4
5
6

SELECT body, 
SUBSTRING( body, -46 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). funzione readdir() e alla funzione closedir().

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
2
3
4
5
6

SELECT body, 
SUBSTRING( body, -46, 8 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). funzione

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
2
3
4
5
6

SELECT body, 
SUBSTRING( body FROM -46 FOR 8 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). funzione
NB:
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()

LEFT (string, length)

string indica la stringa in esame
length indica quanti caratteri prelevare

Prelevare i primi 21 caratteri di una stringa.

Funzione MYSQL LEFT()
1
2
3
4
5
6

SELECT body, 
LEFT ( body, 21 ) AS substr
FROM sql_articoli
WHERE id = 6 
E' equivalente alla seguente
1
2
3
4
5
6

SELECT body, 
SUBSTRING( body, 1 , 21 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). La funzione opendir()

Sintassi per la funzione MYSQL RIGHT()

RIGHT(str, len)

string indica la stringa in esame
length indica quanti caratteri prelevare

Prelevare gli ultimi 11 caratteri di una stringa.

Funzione MYSQL RIGHT()
1
2
3
4
5
6

SELECT body, 
RIGHT ( body, 11 ) AS substr
FROM sql_articoli
WHERE id = 6 
E' equivalente alla seguente
1
2
3
4
5
6

SELECT body, 
SUBSTRING( body, -11 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). closedir().

Sintassi per la funzione MYSQL MID()

MID(str, pos, len)

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
2
3
4
5
6

SELECT body, 
MID( body, 37, 15 ) AS substr
FROM sql_articoli
WHERE id = 6 
E' equivalente alla seguente
1
2
3
4
5
6

SELECT body, 
SUBSTRING( body, 37 , 15 ) AS substr
FROM sql_articoli
WHERE id = 6
1 record letti
body substr
La funzione opendir() apre l'handle della directory, ossia un canale che permette la comunicazione con la directory da usare nelle chiamate alla funzione readdir() e alla funzione closedir(). della directory

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
1
2
3
4
5
6
7
8
9
10
<?php
$Query_1 
"SELECT codice, cognome, nome
FROM sql_rubrica
WHERE SUBSTRING( codice, 1, 3 ) = '003'
"
;
$Query_2 "SELECT codice, cognome, nome
FROM sql_rubrica
WHERE LEFT( codice, 3 ) = '003'
"
;
?>
4 record trovati
4 record visualizzati
codice cognome nome
003_fam_001 Di Maggio Mario
003_fam_002 Scicchitano Andrea
003_fam_010 Edelvisi Maurizio
003_fam_020 Gerardini Silvano
4 record trovati
4 record visualizzati
codice cognome nome
003_fam_001 Di Maggio Mario
003_fam_002 Scicchitano Andrea
003_fam_010 Edelvisi Maurizio
003_fam_020 Gerardini Silvano

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum