by 구루비 DBMS_RANDOM 난수 랜덤 DBMS_RANDOM.VALUE DBMS_RANDOM.STRING DBMS_RANDOM.RANDOM [2002.05.29]
DBMS_RANDOM 패키지를 사용하면 숫자와 문자의 랜덤 데이터를 생성 할 수 있으며, 테이블 데이터를 램덤한 순서로 정렬하여 조회 할 수 있다.
-- 1000에서 10000만 사이의 임이의 수를 조회한다. SELECT DBMS_RANDOM.VALUE(1000, 10000) rand FROM DUAL; -- 아래와 같이 소수점 까지 생성되는 것을 확인 할 수 있다. RAND ---------- 5942.39469 -- 정수로만 1000에서 10000만 사이의 임이의 수를 10개를 생성해 보자 (빈칸을 채워보자) SELECT CEIL(DBMS_RANDOM.VALUE(1000, 10000)) rand FROM DUAL CONNECT BY LEVEL <= 10; -- 아래와 같이 정수가 조회되는 것을 확인 할 수 있다. RAND ------ 7228 3686 8998 5591 ...
-- WITH문을 활용해서 옵션을 한 번에 조회해 보자 WITH t AS( SELECT DBMS_RANDOM.STRING('U', 10) rand FROM DUAL -- 대문자 UNION ALL SELECT DBMS_RANDOM.STRING('L', 10) rand FROM DUAL -- 소문자 UNION ALL SELECT DBMS_RANDOM.STRING('A', 10) rand FROM DUAL -- 영문자 UNION ALL SELECT DBMS_RANDOM.STRING('X', 10) rand FROM DUAL -- 영숫자 UNION ALL SELECT DBMS_RANDOM.STRING('P', 10) rand FROM DUAL --문자혼합 ) SELECT * FROM t; -- 아래와 같이 랜덤한 문자열이 조회되는 것을 확인 할 수 있다. RAND ----------- NSBJGKKQCL iumlemfhtd BGycevXKpp JVM7L9COBI 7tdKU83j@{
-- 랜덤하게 정렬하여 3개의 로우를 출력한다. SELECT * FROM (SELECT * FROM emp ORDER BY DBMS_RANDOM.RANDOM()) WHERE ROWNUM <= 3; -- 위 SQL을 여러번 반복해서 실행해 보자.. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------- -------------------- --------- ---------- -------- ---------- ---------- ---------- 7782 CLARK MANAGER 7839 81/06/09 2450 10 7902 FORD ANALYST 7566 81/12/03 3000 20 7876 ADAMS CLERK 7788 87/05/23 1100 20
- 강좌 URL : http://www.gurubee.net/lecture/1400
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.