반응형
※ DBMS_RANDOM 패키지의 기본 개념과 사용 방법입니다.
DBMS_RANDOM 개요
DBMS_RANDOM은 임의의 숫자를 생성하는 기능을 제공한다.
NORMAL
표준 정규 분포(가우스 분포)에서의 임의값을 추출하는 함수이다.
SELECT LEVEL NO
, DBMS_RANDOM.NORMAL
FROM DUAL
CONNECT BY LEVEL <= 10;
RANDOM
-(2의 31제곱)보다 크거나 같고, 2의 31제곱보다 작은 임의의 정수를 생성한다.
SELECT LEVEL NO
, DBMS_RANDOM.RANDOM
FROM DUAL
CONNECT BY LEVEL <= 10;
STRING
임의의 문자열을 생성한다.
▶ 프로토타입
DBMS_RANDOM.STRING
(
opt IN CHAR,
len IN NUMBER
)
RETURN VARCHAR2;
▶파라미터
파라미터 | 설명 |
opt |
생성하고 싶은 문자열의 형태이고, 항목은 아래와 같다.
그 외의 값일 경우에는 기본적으로 대문자 알파벳의 문자열이다. |
len |
생성할 문자열의 길이이다. |
SELECT DBMS_RANDOM.STRING('u', 15) AS "u_Val"
, DBMS_RANDOM.STRING('U', 15) AS "U_Val"
, DBMS_RANDOM.STRING('l', 15) AS "l_Val"
, DBMS_RANDOM.STRING('L', 15) AS "L_Val"
, DBMS_RANDOM.STRING('a', 15) AS "a_Val"
, DBMS_RANDOM.STRING('A', 15) AS "A_Val"
, DBMS_RANDOM.STRING('x', 15) AS "x_Val"
, DBMS_RANDOM.STRING('X', 15) AS "X_Val"
, DBMS_RANDOM.STRING('p', 15) AS "p_Val"
, DBMS_RANDOM.STRING('P', 15) AS "P_Val"
FROM DUAL
CONNECT BY LEVEL <= 10;
VALUE
범위 내에서 임의의 숫자를 생성한다. 범위가 지정되지 않은 경우는 0보다 크거나 같고 1보다 작은 숫자를 생성한다.
▶ 프로토타입
-- 범위가 지정되기 않은 경우
DBMS_RANDOM.VALUE
RETURN NUMBER;
-- 범위가 지정된 경우
DBMS_RANDOM.VALUE
(
low IN NUMBER,
high IN NUMBER
)
RETURN NUMBER;
▶파라미터
파라미터 | 설명 |
low | 임의값 범위 내에서의 최솟값이다. |
high | 임의값 범위 내에서의 최댓값은 이 값보다 크거나 같을 수 없다. |
SELECT DBMS_RANDOM.VALUE AS VAL1
, DBMS_RANDOM.VALUE(1, 10) AS VAL2
, DBMS_RANDOM.VALUE(100, 1000) AS VAL3
, TRUNC(DBMS_RANDOM.VALUE(1000, 10000)) AS VAL4
FROM DUAL
CONNECT BY LEVEL <= 10;
응용
100에서 5000 사이의 임의의 수 조회
SELECT DBMS_RANDOM.VALUE(100, 5000) RANDOM
FROM DUAL;
-- 결과
298.572076200662881978849765110970857037
10에서 100 사이의 임의의 정수 조회
SELECT TRUNC(DBMS_RANDOM.VALUE(10, 100)) RANDOM
FROM DUAL;
-- 결과
33
Table 랜덤하게 정렬 : Order by 절에 DBMS_RANDOM.RANDOM() 응용
SELECT *
FROM EMP
WHERE ROWNUM <=10
ORDER BY DBMS_RANDOM.RANDOM()
랜덤한 문자열 출력
SELECT DBMS_RANDOM.STRING('U', 10) AS "대문자"
, DBMS_RANDOM.STRING('L', 10) AS "소문자"
, DBMS_RANDOM.STRING('A', 10) AS "영문자"
, DBMS_RANDOM.STRING('X', 10) AS "영숫자"
, DBMS_RANDOM.STRING('P', 10) AS "문자혼합"
FROM DUAL
CONNECT BY LEVEL <= 20;
관련글
반응형
'IT > 데이터베이스' 카테고리의 다른 글
DBeaver 실행 쿼리 히스토리 보기 (0) | 2020.03.23 |
---|---|
오라클 날짜 함수 (0) | 2020.03.16 |
오라클 피벗(Pivot) (0) | 2020.03.10 |
오라클 버전 확인 하기 (0) | 2020.03.10 |
오라클 순번 채번 CONNECT BY LEVEL 활용하기 (5) | 2020.02.25 |
최근댓글