RANDOM/RAND 함수는 0 이상 231 미만 구간에서 임의의 정수 값을 반환하며, seed 인자를 지정할 수 있다. seed 인자의 타입은 INTEGER이며, 실수가 지정되면 반올림하고 INTEGER 범위를 초과하면 에러를 반환한다.
RAND 함수는 연산을 출력하는 행(row)의 개수와 관계없이 한 문장 내에서 1회만 연산을 수행하여 오직 한 개의 임의값만 생성하는 반면, RANDOM 함수는 함수가 호출될 때마다 매번 연산을 수행하므로 한 문장 내에서 여러 개의 다른 임의 값을 생성한다. 따라서, 무작위 순서로 행을 출력하기 위해서는 RANDOM 함수를 이용해야 한다.
무작위 실수 값을 구하기 위해서는 DRANDOM/DRAND 함수를 사용한다.
RANDOM( [seed] )
RAND( [seed] )
SELECT RAND(), RAND(1), RAND(1.4);
=== <Result of SELECT Command in Line 1> ===
rand() rand(1) rand(1.4)
=======================================
1526981144 89400484 89400484
--creating a new table
SELECT * FROM rand_tbl;
=== <Result of SELECT Command in Line 1> ===
id name
===================================
1 'a'
2 'b'
3 'c'
4 'd'
5 'e'
6 'f'
7 'g'
8 'h'
9 'i'
10 'j'
--random() returns random values on every row
SELECT RAND(),RANDOM() FROM rand_tbl;
=== <Result of SELECT Command in Line 1> ===
rand() random()
============================
2078876566 1753698891
2078876566 1508854032
2078876566 625052132
2078876566 279624236
2078876566 1449981446
2078876566 1360529082
2078876566 1563510619
2078876566 1598680194
2078876566 1160177096
2078876566 2075234419
--selecting rows in random order
SELECT * FROM rand_tbl ORDER BY RANDOM();
=== <Result of SELECT Command in Line 1> ===
id name
===================================
6 'f'
1 'a'
5 'e'
4 'd'
2 'b'
7 'g'
10 'j'
9 'i'
3 'c'
8 'h'