In SQL Server is de T-SQL RAND()
functie stelt u in staat om een willekeurig getal te genereren. Het retourneert met name een pseudo-willekeurige float-waarde van 0 tot en met 1, exclusief.
De functie accepteert een optioneel argument dat de seed-waarde levert. Voor elke gegeven seed-waarde zullen de resultaten altijd hetzelfde zijn.
Syntaxis
De syntaxis gaat als volgt:
RAND ( [ seed ] )
Waar zaad is een integer-expressie (tinyint, smallint of int) die de beginwaarde geeft. Als dit argument niet wordt opgegeven, wijst SQL Server willekeurig een seed toe.
Voorbeeld 1 – Geen argumenten
Hier is een eenvoudig voorbeeld om te laten zien wat er gebeurt als we geen argument geven.
SELECT RAND() Result;
Resultaat:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Het resultaat is geen constante - het zal elke keer dat u het uitvoert anders zijn.
Hier is een voorbeeld van wat er gebeurt als we meerdere RAND()
. uitvoeren functies samen.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Resultaat:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Voorbeeld 2 – Een startwaarde gebruiken
Zoals vermeld, kunt u een argument doorgeven om de seed-waarde te bepalen. Hiermee kunt u de uitvoer van de functie beïnvloeden.
SELECT RAND(8) Result;
Resultaat:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
In dit geval retourneert de functie elke keer dezelfde waarde als een gelijke argumentwaarde wordt opgegeven. Dit wordt gedemonstreerd in het volgende voorbeeld:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Resultaat:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
We hebben de functie drie keer uitgevoerd. En omdat we elke keer hetzelfde zaadje gebruikten, waren de resultaten allemaal hetzelfde.
Voorbeeld 3 – RAND() gebruiken als onderdeel van een expressie
U kunt de RAND()
. gebruiken functioneren als onderdeel van een uitdrukking.
SELECT RAND()*10 Result;
Resultaat:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Voorbeeld 4 – Het resultaat afronden
We kunnen het fractionele deel ook verwijderen door de functie te nesten in een functie zoals FLOOR()
of CEILING()
.
SELECT CEILING(RAND()*10) Result;
Resultaat:
+----------+ | Result | |----------| | 3 | +----------+
Voorbeeld 5 – Een willekeurig geheel getal tussen twee getallen teruggeven
Je kunt ook aangeven dat het willekeurige getal tussen twee getallen moet liggen.
Hier is een voorbeeld van het genereren van een willekeurig getal tussen 5 en 10 (inclusief).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Resultaat:
+----------+ | Result | |----------| | 9 | +----------+
Laten we dezelfde code meerdere keren uitvoeren om de wisselende resultaten te zien.
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';
Resultaat:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+