Corsi on-line

Ordinamento alfabetico e ordinamento naturale nei risultati delle query

Non sempre l’ordinamento alfabetico permette di ottenere una disposizione prevedibile nei risultati delle nostre query; quando non utilizziamo un identificatore univoco come criterio discriminante (sia l’ordine desiderato crescente o decrescente) o come indice incrementale di riferimento, è possibile che alcune caratteristiche dei dati archviati influiscano sul posizionamento dei record estratti; facciamo un semplice esempio:

-----------------------------------------
|	id	|	titolo		|
-----------------------------------------
|	1	|	Canale 2	|
|	2	|	Canale 1	|
|	3	|	Canale 112	|
|	4	|	Canale 11	|
-----------------------------------------

Abbiamo un tabella in cui sono memorizzati 4 records, gli identificatori sono sequenziali mentre le stringhe memorizzate nel campo “titolo” non sono ordinate alfabeticamente; ora proviamo ad ottenere un ordinamento alfabetico uilizzando la seguente interrogazione:

SELECT * FROM tabella ORDER BY titolo;

Il risultato ottenuto sarà il seguente:

-----------------------------------------
|	id	|	titolo		|
-----------------------------------------
|	2	|	Canale 1	|
|	4	|	Canale 11	|
|	3	|	Canale 112	|
|	1	|	Canale 2	|
-----------------------------------------

La disposizione mostrata dal precedente output è corretta dal punto di vista alfabetico, ma non dal punto di vista della disposizione naturale degli elementi (“Canale 2” dovrebbe per esempio seguire “Canale 1”, ma ciò non accade); ciò è dovuto alla presenta di cifre che vengono interpretate come porzioni di stringa.

Ora proviamo a modificare la nostra istruzione:

SELECT * FROM tabella ORDER BY LENGTH(titolo), titolo;

Il risultato della query sarà questa volta il seguente:

-----------------------------------------
|	id	|	titolo		|
-----------------------------------------
|	2	|	Canale 1	|
|	1	|	Canale 2	|
|	4	|	Canale 11	|
|	3	|	Canale 112	|
-----------------------------------------

La funzione LENGTH di MySQL ci permetterà in questo caso di ottenere una nuova disposizione che risponda all’ordine naturale degli elementi da elencare.

Post correlati
I più letti del mese
Tematiche