Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Database SQL in Microsoft Fabric
Restituisce un valore float pseudo-casuale da 0 tramite 1, esclusivo.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
RAND ( [ seed ] )
Nota
Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Argomenti
seed
Un'espressione intera (tinyint, smallint o int) che fornisce il valore seme. Se il valore di inizializzazione non è specificato, SQL Server motore di database assegna un valore di inizializzazione in modo casuale. Per un valore di inizializzazione specificato, il risultato restituito è sempre lo stesso.
Tipi restituiti
float
Osservazioni:
Le chiamate ripetitive di con lo stesso valore di RAND() inizializzazione restituiscono gli stessi risultati.
Per una connessione, se
RAND()viene chiamato con un valore di inizializzazione specificato, tutte le chiamate successive diRAND()producono risultati in base alla chiamata con seedingRAND(). Ad esempio, la query seguente restituisce sempre la stessa sequenza di numeri.SELECT RAND(100), RAND(), RAND();Quando si usa la
RAND()funzione in unaUPDATEquery oINSERT, tutte le righe interessate ottengono lo stesso valore.
Esempi
A. Crea quattro numeri casuali diversi
Nell'esempio seguente vengono generati quattro numeri casuali diversi generati dalla RAND() funzione .
DECLARE @counter AS SMALLINT;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT RAND() AS RandomNumber;
SET @counter = @counter + 1;
END
GO
B. Generare casualmente 0 o 1
L'esempio seguente utilizza la ROUND() funzione per restituire casualmente o 0 o 1.
SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO
Nota
In questo esempio, la FLOOR() funzione restituisce 0sempre , mentre la CEILING() funzione restituisce 1sempre .
C. Genera numeri casuali maggiori di 1
Puoi scalare l'intervallo del float casuale moltiplicando la RAND() funzione con un valore intero. Il seguente esempio restituisce un galleggiante casuale tra 0 e 10.
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT @Constant * RAND() AS RandomNumber;
GO
D. Generare interi casuali
Puoi generare un valore intero casuale scalando la RAND() funzione e combinandola con le ROUND()funzioni, FLOOR(), oppure CEILING() . Il seguente esempio restituisce un intero casuale tra 0 e 10, inclusi.
DECLARE @Constant AS INT;
SET @Constant = 10;
SELECT ROUND(@Constant * RAND(), 0) AS FirstRandomInteger,
FLOOR(@Constant * RAND()) AS SecondRandomInteger,
CEILING(@Constant * RAND()) AS ThirdRandomInteger;
GO
E. Inserire valori casuali in una tabella
Il seguente esempio popola una variabile della tabella con valori casuali di int, float e bit .
DECLARE @RandomTable TABLE (
RandomIntegers INT,
RandomFloats FLOAT,
RandomBits BIT);
DECLARE @RowCount AS INT;
DECLARE @Counter AS INT;
SET @RowCount = 10;
SET @Counter = 1;
WHILE @Counter <= @RowCount
BEGIN
INSERT INTO @RandomTable
VALUES (ROUND(10 * RAND(), 0), RAND(), CAST (ROUND(RAND(), 0) AS BIT));
SET @Counter = @Counter + 1;
END
SELECT *
FROM @RandomTable;
GO