In SQL Server, T-SQL RAND()
La funzione consente di generare un numero casuale. In particolare, restituisce un valore float pseudo-casuale compreso tra 0 e 1, esclusivo.
La funzione accetta un argomento facoltativo che fornisce il valore seme. Per qualsiasi valore seed, i risultati saranno sempre gli stessi.
Sintassi
La sintassi è questa:
RAND ( [ seed ] )
Dove seme è un'espressione intera (tinyint, smallint o int) che fornisce il valore del seme. Se questo argomento non viene fornito, SQL Server assegna un seme a caso.
Esempio 1 – Nessun argomento
Ecco un esempio di base per dimostrare cosa succede quando non forniamo un argomento.
SELECT RAND() Result;
Risultato:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Il risultato non è una costante:sarà diverso ogni volta che lo esegui.
Ecco un esempio di cosa succede quando eseguiamo più RAND()
funzionano insieme.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Risultato:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Esempio 2:utilizzo di un valore seme
Come accennato, puoi passare un argomento per determinare il valore del seme. Ciò consente di influenzare l'output della funzione.
SELECT RAND(8) Result;
Risultato:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
In questo caso, la funzione restituirà lo stesso valore ogni volta se viene fornito un valore di argomento uguale. Ciò è dimostrato nel seguente esempio:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Risultato:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Abbiamo eseguito la funzione tre volte. E poiché abbiamo usato lo stesso seme ogni volta, i risultati sono stati tutti gli stessi.
Esempio 3:utilizzo di RAND() come parte di un'espressione
Puoi usare il RAND()
funzione come parte di un'espressione.
SELECT RAND()*10 Result;
Risultato:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Esempio 4 – Arrotondamento del risultato
Possiamo anche rimuovere la parte frazionaria annidando la funzione all'interno di una funzione come FLOOR()
o CEILING()
.
SELECT CEILING(RAND()*10) Result;
Risultato:
+----------+ | Result | |----------| | 3 | +----------+
Esempio 5 – Restituzione di un numero intero casuale tra due numeri
Puoi anche specificare che il numero casuale deve essere compreso tra due numeri.
Ecco un esempio di generazione di un numero casuale compreso tra 5 e 10 (inclusi).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Risultato:
+----------+ | Result | |----------| | 9 | +----------+
Eseguiamo lo stesso codice più volte per vedere i diversi risultati.
SELECT FLOOR(RAND()*(10-5+1)+5) 'Result 1', FLOOR(RAND()*(10-5+1)+5) 'Result 2', FLOOR(RAND()*(10-5+1)+5) 'Result 3';
Risultato:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+