sql >> Databasteknik >  >> RDS >> Sqlserver

RAND() Exempel i SQL Server

I SQL Server, T-SQL RAND() funktionen låter dig generera ett slumptal. Specifikt returnerar den ett pseudo-slumpmässigt flytvärde från 0 till 1, exklusivt.

Funktionen accepterar ett valfritt argument som ger startvärdet. För ett givet frövärde kommer resultaten alltid att vara desamma.

Syntax

Syntaxen ser ut så här:

RAND ( [ seed ] ) 

Där frö är ett heltalsuttryck (tinyint, smallint eller int) som ger frövärdet. Om detta argument inte tillhandahålls, tilldelar SQL Server ett frö slumpmässigt.

Exempel 1 – Inga argument

Här är ett grundläggande exempel för att visa vad som händer när vi inte ger ett argument.

SELECT RAND() Result;

Resultat:

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

Resultatet är inte en konstant – det kommer att vara olika varje gång du kör det.

Här är ett exempel på vad som händer när vi kör flera RAND() fungerar tillsammans.

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

Resultat:

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

Exempel 2 – Använda ett frövärde

Som nämnts kan du skicka in ett argument för att bestämma frövärdet. Detta gör att du kan påverka resultatet av funktionen.

SELECT RAND(8) Result;

Resultat:

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

I det här fallet kommer funktionen att returnera samma värde varje gång om ett lika argumentvärde tillhandahålls. Detta visas i följande exempel:

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örde funktionen tre gånger. Och eftersom vi använde samma utsäde varje gång blev resultaten desamma.

Exempel 3 – Användning av RAND() som en del av ett uttryck

Du kan använda RAND() fungera som en del av ett uttryck.

SELECT RAND()*10 Result;

Resultat:

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

Exempel 4 – Avrundning av resultatet

Vi kan också ta bort bråkdelen genom att kapsla funktionen inuti en funktion som FLOOR() eller CEILING() .

SELECT CEILING(RAND()*10) Result;

Resultat:

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

Exempel 5 – Returnera ett slumpmässigt heltal mellan två tal

Du kan också ange att slumptalet måste ligga mellan två tal.

Här är ett exempel på att generera ett slumptal mellan 5 och 10 (inklusive).

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

Resultat:

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

Låt oss köra samma kod flera gånger för att se de olika resultaten.

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. Hur kan jag konvertera bigint (UNIX-tidsstämpel) till datetime i SQL Server?

  2. INSERT INTO ... FRÅN SELECT ... RETURNERAR ID-mappningar

  3. Overheaden för #temp tabellskapande spårning

  4. Skaffa språket som för närvarande används i SQL Server