RANDOM/RAND 함수

설명

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);

       rand()      rand(1)    rand(1.4)

=======================================

   1526981144     89400484     89400484

 

--creating a new table

SELECT * FROM rand_tbl;

           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;

       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();

           id  name

===================================

            6  'f'

            1  'a'

            5  'e'

            4  'd'

            2  'b'

            7  'g'

           10  'j'

            9  'i'

            3  'c'

            8  'h'