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