Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Base 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 deRAND()produisent des résultats en fonction de l’appel de départRAND(). 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êteUPDATEouINSERT, 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