Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exemples RAND() dans SQL Server

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 ] ) 

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