본문 바로가기

DATABASE/Oracle

SQL문 랜덤 숫자 뽑기

오늘은 SQL 난수 뽑기를 해보겠습니다.


사용 함수 : dbms_random.value() , ceil()




java 에서 Math.random() 함수를 사용해 지정 범위 내의 난수를 출력했던 것을 기억해 봅시다.




JAVA 

예) 1~5 사이의 난수 출력







위에 코드를 보시면 단순히 함수만 입력해서는 츨력한 것이 아니라 


형변환 (int) + jvava랜덤함수 Math.random()  + 최대값 *10  + 최소값 +1


원하는 값을 위해 지정해준 몇가지 설정들이 있는 것을 볼 수 있습니다





SQL

예) 1~5 사이의 난수 출력 (실수)

SQL> select dbms_random.value(1,5) from dual;


DBMS_RANDOM.VALUE(1,5)

---------------------

4.97127761




함수 파라미터로는 난수가 출력 될 범위를 지정해두면 되는데요

콤마(,)를 기준으로 왼쪽에는 min과 오른쪽 파라미터는 Max를 넣어주면 됩니다.

 

java에서도 그랬듯이 SQL문 랜덤 함수 또한 실수로서 출력되기 때문에 SQL문에서도 정수 출력을 위해 함수를 하나 더 붙여줘야 합니다.


그것은 바로 CEIL(), ROUND() 입니다 . 실수에서 소수점 아래로 떨궈 정수로 바꿔주는 역할을 합니다



적용은 dbms_random.value() 함수를 감싸주면 되니 간단하죠?




SQL

예) 1~5 사이의 난수 출력 (정수)

* ceil()

SQL> select ceil(dbms_random.value(1,5)) from dual;

CEIL(DBMS_RANDOM.VALUE(1,5))

----------------------------

                          4



* ROUND()


SQL> select round(dbms_random.value(1,5)) from dual;


ROUND(DBMS_RANDOM.VALUE(1,5))

----------------------------

                          4



즐거운 코딩 되세요~

'DATABASE > Oracle' 카테고리의 다른 글

데이터베이스의 언어 'SQL' 이란  (0) 2018.04.24