I MySQL, RAND()
funktionen låter dig generera ett slumptal. Specifikt returnerar funktionen ett slumpmässigt flyttalsvärde v i intervallet 0 <= v < 1.0
.
Du kan också påverka slumptalet genom att ange ett startvärde som ett argument.
Syntax
Syntaxen ser ut så här:
RAND([N])
Där N
är ett valfritt frövärde som du kan använda för att påverka resultatet.
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();
Resultat:
+--------------------+ | RAND() | +--------------------+ | 0.4335442291885095 | +--------------------+
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.9413559538697414 | 0.40614711251682334 | 0.20666773170853753 | +--------------------+---------------------+---------------------+
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(5);
Resultat:
+---------------------+ | RAND(5) | +---------------------+ | 0.40613597483014313 | +---------------------+
I det här fallet kommer funktionen att returnera samma värde varje gång om ett lika stort argumentvärde anges.
SELECT RAND(5) 'Result 1', RAND(5) 'Result 2', RAND(5) 'Result 3';
Resultat:
+---------------------+---------------------+---------------------+ | Result 1 | Result 2 | Result 3 | +---------------------+---------------------+---------------------+ | 0.40613597483014313 | 0.40613597483014313 | 0.40613597483014313 | +---------------------+---------------------+---------------------+
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;
Resultat:
+-------------------+ | RAND()*10 | +-------------------+ | 8.148973517258627 | +-------------------+
Exempel 4 – Returnera ett slumpmässigt heltal mellan två tal
Du kan kombinera RAND()
funktion med FLOOR()
funktion för att returnera ett slumpmässigt heltal mellan två tal.
Så här genererar du ett heltal mellan 5 och 10 (inklusive).
SELECT FLOOR(RAND()*(10-5+1)+5);
Resultat:
+--------------------------+ | FLOOR(RAND()*(10-5+1)+5) | +--------------------------+ | 7 | +--------------------------+
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 | +----------+----------+----------+ | 7 | 9 | 6 | +----------+----------+----------+