Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

RAND() Esempi in SQL Server

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          |
+------------+------------+------------+