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
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
이런 기능이 있다니 재미있네요.
감사합니다.