Ordinare i dati in modo casuale con la funzione RND in SQL
Capita a molti programmatori di avere la necessità, o il vezzo, di estrarre record casuali dal database, mostrandoli tutti (o in parte a seconda del numero e dei parametri di ricerca) ordinandoli a casaccio.
A seconda del linguaggio di scripting o di programmazione che si interfaccia col database, è possibile utilizzare le funzioni predefinite per creare delle routine che, basandosi su di una query, estraggano uno o più record a caso, ordinandoli a piacimento.
Nella maggior parte dei casi si tratta di routine non complicatissime, ma dispendiose in termini di codice.
SQL mette a disposizione la funzione RND (forma contratta di RANDOM) che accetta come parametro un numero intero, come un campo auto increment (classico campo contatore).
C'è da ricordare che demandare un'operazione al DBMS, quando possibile, è un'ottima soluzione in termini di ottimizzione (e risparmio) delle risorse a disposizione.
Facciamo un esempio pratico.
Si faccia riferimento alla tabella "utenti" composta dal campo "id" di tipo contatore e dal campo "nome" di tipo testo.
Popolate la tabella con qualche dato di prova e testate il risultato eseguendo la seguente stringa SQL
SELECT nome FROM utenti ORDER BY RND(id)In questo modo estraiamo tutti i dati in maniera casuale, ma se volessimo estrarne solo un numero predefinito useremo la clausola TOP come nell'esempio che segue
SELECT TOP 2 nome FROM utenti ORDER BY RND(id)Naturalmente i record che saranno estratti non saranno sempre gli stessi; se i miei dati sono
1 | luke 2 | max 3 | elioxil risultato, utilizzando la clausola TOP, potrebbe essere
max elioxpiuttosto che
eliox lukee cosi via.







