sql >> Database teknologi >  >> RDS >> Sqlserver

RAND() Eksempler i SQL Server

I SQL Server, T-SQL RAND() funktionen giver dig mulighed for at generere et tilfældigt tal. Specifikt returnerer den en pseudo-tilfældig flydende værdi fra 0 til 1, eksklusivt.

Funktionen accepterer et valgfrit argument, som giver startværdien. For enhver given frøværdi vil resultaterne altid være de samme.

Syntaks

Syntaksen ser sådan ud:

RAND ( [ seed ] ) 

Hvor frø er et heltalsudtryk (tinyint, smallint eller int), der giver startværdien. Hvis dette argument ikke er angivet, tildeler SQL Server et frø tilfældigt.

Eksempel 1 – Ingen argumenter

Her er et grundlæggende eksempel til at demonstrere, hvad der sker, når vi ikke giver et argument.

SELECT RAND() Result;

Resultat:

+--------------------+
| Result             |
|--------------------|
| 0.0354675287734768 |
+--------------------+

Resultatet er ikke en konstant – det vil være anderledes hver gang du kører det.

Her er et eksempel på, hvad der sker, når vi kører flere RAND() fungerer sammen.

SELECT 
  RAND() 'Result 1',
  RAND() 'Result 2',
  RAND() 'Result 3';

Resultat:

+-------------------+------------------+--------------------+
| Result 1          | Result 2         | Result 3           |
|-------------------+------------------+--------------------|
| 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 |
+-------------------+------------------+--------------------+

Eksempel 2 – Brug af en frøværdi

Som nævnt kan du sende et argument ind for at bestemme frøværdien. Dette giver dig mulighed for at påvirke outputtet af funktionen.

SELECT RAND(8) Result;

Resultat:

+-------------------+
| Result            |
|-------------------|
| 0.713722424011731 |
+-------------------+

I dette tilfælde vil funktionen returnere den samme værdi hver gang, hvis der er angivet en ens argumentværdi. Dette er vist i følgende eksempel:

SELECT 
  RAND(8) 'Result 1',
  RAND(8) 'Result 2',
  RAND(8) 'Result 3';

Resultat:

+-------------------+-------------------+-------------------+
| Result 1          | Result 2          | Result 3          |
|-------------------+-------------------+-------------------|
| 0.713722424011731 | 0.713722424011731 | 0.713722424011731 |
+-------------------+-------------------+-------------------+

Vi kørte funktionen tre gange. Og fordi vi brugte det samme frø hver gang, var resultaterne alle de samme.

Eksempel 3 – Brug af RAND() som en del af et udtryk

Du kan bruge RAND() fungere som en del af et udtryk.

SELECT RAND()*10 Result;

Resultat:

+------------------+
| Result           |
|------------------|
| 3.32720913214171 |
+------------------+

Eksempel 4 – Afrunding af resultatet

Vi kan også fjerne brøkdelen ved at indlejre funktionen i en funktion såsom FLOOR() eller CEILING() .

SELECT CEILING(RAND()*10) Result;

Resultat:

+----------+
| Result   |
|----------|
| 3        |
+----------+

Eksempel 5 – Returnering af et tilfældigt heltal mellem to tal

Du kan også angive, at det tilfældige tal skal være mellem to tal.

Her er et eksempel på generering af et tilfældigt tal mellem 5 og 10 (inklusive).

SELECT FLOOR(RAND()*(10-5+1)+5) Result;

Resultat:

+----------+
| Result   |
|----------|
| 9        |
+----------+

Lad os køre den samme kode flere gange for at se de forskellige resultater.

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';

Resultat:

+------------+------------+------------+
| Result 1   | Result 2   | Result 3   |
|------------+------------+------------|
| 10         | 7          | 6          |
+------------+------------+------------+

  1. Tjek om der findes en række, ellers indsæt

  2. MySQL #1140 - Blanding af GROUP-kolonner

  3. .NET / Oracle:Sådan udføres et script med DDL-sætninger programmatisk

  4. Brug af indlejrede transaktioner i Oracle