W SQL Server funkcja T-SQL RAND()
funkcja pozwala na wygenerowanie liczby losowej. W szczególności zwraca pseudolosową wartość zmiennoprzecinkową od 0 do 1, wyłączną.
Funkcja przyjmuje opcjonalny argument, który dostarcza wartość inicjatora. Dla dowolnej wartości nasion wyniki będą zawsze takie same.
Składnia
Składnia wygląda tak:
RAND ( [ seed ] )
Gdzie ziarno jest wyrażeniem całkowitym (tinyint, smallint lub int), które podaje wartość inicjatora. Jeśli ten argument nie zostanie podany, SQL Server losowo przypisze ziarno.
Przykład 1 – brak argumentów
Oto podstawowy przykład pokazujący, co się dzieje, gdy nie dostarczamy argumentów.
SELECT RAND() Result;
Wynik:
+--------------------+ | Result | |--------------------| | 0.0354675287734768 | +--------------------+
Wynik nie jest stały – za każdym razem będzie inny.
Oto przykład tego, co się dzieje, gdy uruchamiamy wiele funkcji RAND()
działa razem.
SELECT RAND() 'Result 1', RAND() 'Result 2', RAND() 'Result 3';
Wynik:
+-------------------+------------------+--------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+------------------+--------------------| | 0.999568268427369 | 0.40098746841349 | 0.0606836711764244 | +-------------------+------------------+--------------------+
Przykład 2 – Korzystanie z wartości początkowej
Jak wspomniano, możesz przekazać argument, aby określić wartość inicjatora. Pozwala to wpływać na wyjście funkcji.
SELECT RAND(8) Result;
Wynik:
+-------------------+ | Result | |-------------------| | 0.713722424011731 | +-------------------+
W takim przypadku funkcja zwróci tę samą wartość za każdym razem, jeśli zostanie podana równa wartość argumentu. Pokazuje to następujący przykład:
SELECT RAND(8) 'Result 1', RAND(8) 'Result 2', RAND(8) 'Result 3';
Wynik:
+-------------------+-------------------+-------------------+ | Result 1 | Result 2 | Result 3 | |-------------------+-------------------+-------------------| | 0.713722424011731 | 0.713722424011731 | 0.713722424011731 | +-------------------+-------------------+-------------------+
Uruchomiliśmy tę funkcję trzy razy. A ponieważ za każdym razem używaliśmy tego samego materiału siewnego, wyniki były takie same.
Przykład 3 – Używanie RAND() jako części wyrażenia
Możesz użyć RAND()
funkcjonować jako część wyrażenia.
SELECT RAND()*10 Result;
Wynik:
+------------------+ | Result | |------------------| | 3.32720913214171 | +------------------+
Przykład 4 – zaokrąglanie wyniku
Możemy również usunąć część ułamkową, zagnieżdżając funkcję wewnątrz funkcji, takiej jak FLOOR()
lub CEILING()
.
SELECT CEILING(RAND()*10) Result;
Wynik:
+----------+ | Result | |----------| | 3 | +----------+
Przykład 5 – Zwrócenie losowej liczby całkowitej między dwiema liczbami
Możesz również określić, że liczba losowa musi znajdować się między dwiema liczbami.
Oto przykład generowania liczby losowej od 5 do 10 (włącznie).
SELECT FLOOR(RAND()*(10-5+1)+5) Result;
Wynik:
+----------+ | Result | |----------| | 9 | +----------+
Uruchommy ten sam kod wiele razy, aby zobaczyć różne wyniki.
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';
Wynik:
+------------+------------+------------+ | Result 1 | Result 2 | Result 3 | |------------+------------+------------| | 10 | 7 | 6 | +------------+------------+------------+