반응형

 ※ DBMS_RANDOM 패키지의 기본 개념과 사용 방법입니다.

참고자료 : https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20160406-000002/tibero_pkg/chap_dbms_random.html

 

제23장 DBMS_RANDOM

본 절에서는 DBMS_RANDOM 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명한다. 새로운 seed를 지정하여 임의값 생성 시퀀스를 새로 생성한다. 기존과 동일한 seed를 지정하면 동일 시퀀스 내의 첫 번째 값으로 돌아가므로 매 호출 후 임의값을 추출하면 같은 값이 나온다. SEED 프러시저의 세부 내용은 다음과 같다. 프로토타입 seed가 번호인 경우 DBMS_RANDOM.SEED ( val IN BINARY_INTEGER ); seed가

technet.tmaxsoft.com

 

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

생성하고 싶은 문자열의 형태이고, 항목은 아래와 같다.

  • 'u' 또는 'U': 대문자 알파벳의 문자열

  • 'l' 또는 'L': 소문자 알파벳의 문자열

  • 'a' 또는 'A': 대소문자 구분 없이 임의의 알파벳의 문자열

  • 'x' 또는 'X': 임의의 대문자 알파벳 또는 숫자의 문자열

  • 'p' 또는 'P': 임의의 출력 가능한 문자들의 배열

그 외의 값일 경우에는 기본적으로 대문자 알파벳의 문자열이다.

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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기