DRANDOM/DRAND 함수

설명

DRANDOM/DRAND 함수는 구간 0.0 이상 1.0 미만의 구간에서 임의의 이중 정밀도(double-precision) 부동 소수점 값을 반환하며, seed 인자를 지정할 수 있다. seed 인자의 타입은 INTEGER이며, 실수가 지정되면 반올림하고, INTEGER 범위를 초과하면 에러를 반환한다.

DRAND 함수는 연산을 출력하는 행(row)의 개수와 관계없이 한 문장 내에서 1회만 연산을 수행하여 오직 한 개의 임의값만 생성하는 반면, DRANDOM 함수는 함수가 호출될 때마다 매번 연산을 수행하므로 한 문장 내에서 여러 개의 다른 임의 값을 생성한다. 따라서, 무작위 순서로 행을 출력하기 위해서는 ORDER BY 절에 DRANDOM 함수를 이용해야 한다.

무작위 정수값을 구하기 위해서는 RANDOM/RAND 함수를 사용한다.

구문

DRANDOM( [seed] )

DRAND( [seed] )

예제

SELECT DRAND(), DRAND(1), DRAND(1.4);

                   drand()                  drand(1)                drand(1.4)

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

    2.849646518006921e-001    4.163034446537495e-002    4.163034446537495e-002

 

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'

 

--drandom() returns random values on every row

SELECT DRAND(), DRANDOM() FROM rand_tbl;

   drand()                 drandom()

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

   7.638782921842098e-001    1.018707846308786e-001

   7.638782921842098e-001    3.191320535905026e-001

   7.638782921842098e-001    3.461714529862361e-001

   7.638782921842098e-001    6.791894283883175e-001

   7.638782921842098e-001    4.533829767754143e-001

   7.638782921842098e-001    1.714224677266762e-001

   7.638782921842098e-001    1.698049867244484e-001

   7.638782921842098e-001    4.507583849604786e-002

   7.638782921842098e-001    5.279091769157994e-001

   7.638782921842098e-001    7.021088290047914e-001

 

--selecting rows in random order

SELECT * FROM rand_tbl ORDER BY DRANDOM();

           id  name

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

            6  'f'

            2  'b'

            7  'g'

            8  'h'

            1  'a'

            4  'd'

           10  'j'

            9  'i'

            5  'e'

            3  'c'