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