Partager via


RAND (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsBase de données SQL dans Microsoft Fabric

Retourne une valeur flottante pseudo-aléatoire de 0 via 1, exclusif.

Conventions de la syntaxe Transact-SQL

Syntaxe

RAND ( [ seed ] )

Notes

Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Arguments

seed

Une expression entière (tinyint, smallint ou int) qui donne la valeur de départ. Si la valeur seed n’est pas spécifiée, le Moteur de base de données SQL Server affecte une valeur de départ aléatoire. Pour une valeur de départ spécifiée, le résultat retourné est toujours le même.

Types de retour

float

Notes

Les appels répétitifs de RAND() avec la même valeur de départ retournent les mêmes résultats.

  • Pour une connexion, si RAND() est appelé avec une valeur de départ spécifiée, tous les appels ultérieurs de RAND() produisent des résultats en fonction de l’appel de départ RAND(). Ainsi, la requête suivante produit toujours la même séquence de numéros.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Lorsque vous utilisez la fonction RAND() dans une requête UPDATE ou INSERT, toutes les lignes affectées obtiennent la même valeur.

Exemples

R. Créer quatre nombres aléatoires différents

L’exemple suivant produit quatre numéros aléatoires différents avec la fonction RAND().

DECLARE @counter AS SMALLINT;

SET @counter = 1;

WHILE @counter < 5
    BEGIN
        SELECT RAND() AS RandomNumber;
        SET @counter = @counter + 1;
    END
GO

B. Générer aléatoirement 0 ou 1

L’exemple suivant utilise la ROUND() fonction pour retourner aléatoirement soit 0 soit 1.

SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO

Notes

Dans cet exemple, la FLOOR() fonction retourne 0toujours , tandis que la CEILING() fonction retourne 1toujours .

Chapitre C. Générer des nombres aléatoires supérieurs à 1

Vous pouvez étendre l’intervalle du flottant aléatoire en multipliant la RAND() fonction par une valeur entière. L’exemple suivant renvoie un flotteur aléatoire entre 0 et 10.

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Générer des entiers aléatoires

Vous pouvez générer une valeur entière aléatoire en mettant la RAND() fonction à l’échelle et en la combinant avec les ROUND()fonctions, FLOOR(), ou CEILING() . L’exemple suivant retourne un entier aléatoire entre 0 et 10, inclus.

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. Insérer des valeurs aléatoires dans une table

L’exemple suivant remplit une variable de table avec des valeurs aléatoires d’int, de flottant et de 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