V SQL Serveru T-SQL RAND()
funkce umožňuje generovat náhodné číslo. Konkrétně vrací pseudonáhodnou plovoucí hodnotu od 0 do 1, exkluzivní.
Funkce přijímá volitelný argument, který poskytuje počáteční hodnotu. Pro jakoukoli danou počáteční hodnotu budou výsledky vždy stejné.
Syntaxe
Syntaxe vypadá takto:
RAND ( [ seed ] )
Kde semeno je celočíselný výraz (tinyint, smallint nebo int), který udává počáteční hodnotu. Pokud tento argument není zadán, SQL Server přiřadí semeno náhodně.
Příklad 1 – Žádné argumenty
Zde je základní příklad, který demonstruje, co se stane, když neuvedeme argument.
SELECT RAND() Result;
Výsledek:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Výsledek není konstantní – při každém spuštění se bude lišit.
Zde je příklad toho, co se stane, když spustíme více RAND()
fungují společně.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Výsledek:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Příklad 2 – Použití počáteční hodnoty
Jak již bylo zmíněno, můžete předat argument k určení počáteční hodnoty. To vám umožní ovlivnit výstup funkce.
SELECT RAND(8) Result;
Výsledek:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
V tomto případě funkce vrátí stejnou hodnotu pokaždé, když je zadána stejná hodnota argumentu. To je ukázáno v následujícím příkladu:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Výsledek:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Funkci jsme spustili třikrát. A protože jsme pokaždé použili stejné semeno, výsledky byly všechny stejné.
Příklad 3 – Použití RAND() jako součásti výrazu
Můžete použít RAND()
fungovat jako součást výrazu.
SELECT RAND()*10 Result;
Výsledek:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Příklad 4 – Zaokrouhlení výsledku
Můžeme také odstranit zlomkovou část vnořením funkce do funkce, jako je FLOOR()
nebo CEILING()
.
SELECT CEILING(RAND()*10) Result;
Výsledek:
+----------+ | Result | |----------| | 3 | +----------+
Příklad 5 – Vrácení náhodného celého čísla mezi dvěma čísly
Můžete také určit, že náhodné číslo musí být mezi dvěma čísly.
Zde je příklad generování náhodného čísla mezi 5 a 10 (včetně).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Výsledek:
+----------+ | Result | |----------| | 9 | +----------+
Spusťte stejný kód několikrát, abyste viděli různé výsledky.
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';
Výsledek:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+