Dans SQL Server, le T-SQL RAND()
La fonction vous permet de générer un nombre aléatoire. Plus précisément, il renvoie une valeur flottante pseudo-aléatoire de 0 à 1, exclusif.
La fonction accepte un argument facultatif qui fournit la valeur de départ. Pour toute valeur de départ donnée, les résultats seront toujours les mêmes.
Syntaxe
La syntaxe ressemble à ceci :
RAND ( [ seed ] )
Où graine est une expression entière (tinyint, smallint ou int) qui donne la valeur de départ. Si cet argument n'est pas fourni, SQL Server attribue une graine au hasard.
Exemple 1 – Aucun argument
Voici un exemple de base pour montrer ce qui se passe lorsque nous ne fournissons pas d'argument.
SELECT RAND() Result;
Résultat :
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Le résultat n'est pas une constante - il sera différent à chaque fois que vous l'exécuterez.
Voici un exemple de ce qui se passe lorsque nous exécutons plusieurs RAND()
fonctionnent ensemble.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Résultat :
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Exemple 2 - Utilisation d'une valeur de départ
Comme mentionné, vous pouvez passer un argument pour déterminer la valeur de départ. Cela vous permet d'influencer la sortie de la fonction.
SELECT RAND(8) Result;
Résultat :
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
Dans ce cas, la fonction renverra la même valeur à chaque fois si une valeur d'argument égale est fournie. Ceci est démontré dans l'exemple suivant :
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Résultat :
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Nous avons exécuté la fonction trois fois. Et parce que nous avons utilisé la même graine à chaque fois, les résultats étaient tous les mêmes.
Exemple 3 - Utilisation de RAND() dans le cadre d'une expression
Vous pouvez utiliser le RAND()
fonction dans le cadre d'une expression.
SELECT RAND()*10 Result;
Résultat :
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Exemple 4 - Arrondir le résultat
Nous pouvons également supprimer la partie fractionnaire en imbriquant la fonction dans une fonction telle que FLOOR()
ou CEILING()
.
SELECT CEILING(RAND()*10) Result;
Résultat :
+----------+ | Result | |----------| | 3 | +----------+
Exemple 5 - Retourner un entier aléatoire entre deux nombres
Vous pouvez également spécifier que le nombre aléatoire doit être compris entre deux nombres.
Voici un exemple de génération d'un nombre aléatoire entre 5 et 10 (inclus).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Résultat :
+----------+ | Result | |----------| | 9 | +----------+
Exécutons le même code plusieurs fois pour voir les différents résultats.
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';
Résultat :
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+