랜덤 함수
DBMS_RANDOM.VALUE
- 랜덤한 숫자를 생성한다
- Syntax : DBMS_RANDOM.VALUE(low IN NUMBER, high IN NUMBER)
- 파라미터 low는 최소범위, high는 최대 범위 값이다
정수로만 1000~10000 사이의 임의의 수를 10개를 생성해 보자
SELECT CEIL(DBMS_RANDOM.VALUE(1000, 10000)) rand
FROM DUAL
CONNECT BY LEVEL <= 10
DBMS_RANDOM.STRING
- 랜덤한 문자열을 생성한다
- Syntax : DBMS_RANDOM.STRING opt (IN CHAR, len IN NUMBER)
- opt(옵션)은 아래와 같다
'u', 'U' : 대문자
'l' , 'L' : 소문자
'a', 'A' : 대소문자 구분없는 영문자
'x', 'X' : 영문자와 숫자 혼합
'p', 'P' : 문자 혼합
성별, 날짜 생성
SELECT LEVEL userId,
MOD (ROWNUM, 50000) deptid
TRUNC (DBMS_RANDOM.VALUE (1000, 500000), 2) salary,
DECODE (ROUND (DBMS_RANDOM.VALUE (1, 2)), 1, 'M', 2, 'F') gender,
TO_DATE (
ROUND (DBMS_RANDOM.VALUE (1, 28))
|| '-'
|| ROUND (DBMS_RANDOM.VALUE (1, 12))
|| '-'
|| ROUND (DBMS_RANDOM.VALUE (1900, 2010)),
'DD-MM-YYYY'
)
dt,
FROM DUAL
CONNECT BY LEVEL < 10000;
이름 생성 함수
다음형식의 함수생성 GET_KORNM ('V_FROM', 'V_TO') VARCHAR2 으로리턴
BY OUT_REAL_NM 으로 리턴받고
BY V_ARR (VARCHAR2(10) 속성의 자료들이 기입되는 테이블)로 리턴 받고
V_FIRST V_ARR은 V_FIRST <- V_ARR인지 아니라면 무슨뜻인지?
REFERENCE:
http://www.gurubee.net/lecture/1400
http://rocabilly.tistory.com/275
http://cyh0214.tistory.com/entry/%EB%AC%B4%EC%9E%91%EC%9C%84-%ED%95%9C%EA%B8%80%EC%9D%B4%EB%A6%84-%EB%A7%8C%EB%93%A4%EA%B8%B0
DBMS_RANDOM.VALUE
- 랜덤한 숫자를 생성한다
- Syntax : DBMS_RANDOM.VALUE(low IN NUMBER, high IN NUMBER)
- 파라미터 low는 최소범위, high는 최대 범위 값이다
정수로만 1000~10000 사이의 임의의 수를 10개를 생성해 보자
SELECT CEIL(DBMS_RANDOM.VALUE(1000, 10000)) rand
FROM DUAL
CONNECT BY LEVEL <= 10
DBMS_RANDOM.STRING
- 랜덤한 문자열을 생성한다
- Syntax : DBMS_RANDOM.STRING opt (IN CHAR, len IN NUMBER)
- opt(옵션)은 아래와 같다
'u', 'U' : 대문자
'l' , 'L' : 소문자
'a', 'A' : 대소문자 구분없는 영문자
'x', 'X' : 영문자와 숫자 혼합
'p', 'P' : 문자 혼합
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| -- 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@{ |
성별, 날짜 생성
SELECT LEVEL userId,
MOD (ROWNUM, 50000) deptid
TRUNC (DBMS_RANDOM.VALUE (1000, 500000), 2) salary,
DECODE (ROUND (DBMS_RANDOM.VALUE (1, 2)), 1, 'M', 2, 'F') gender,
TO_DATE (
ROUND (DBMS_RANDOM.VALUE (1, 28))
|| '-'
|| ROUND (DBMS_RANDOM.VALUE (1, 12))
|| '-'
|| ROUND (DBMS_RANDOM.VALUE (1900, 2010)),
'DD-MM-YYYY'
)
dt,
FROM DUAL
CONNECT BY LEVEL < 10000;
이름 생성 함수
다음형식의 함수생성 GET_KORNM ('V_FROM', 'V_TO') VARCHAR2 으로리턴
BY OUT_REAL_NM 으로 리턴받고
BY V_ARR (VARCHAR2(10) 속성의 자료들이 기입되는 테이블)로 리턴 받고
V_FIRST V_ARR은 V_FIRST <- V_ARR인지 아니라면 무슨뜻인지?
CREATE OR REPLACE FUNCTION GET_KORNM
( V_FROM IN VARCHAR2,
V_TO IN VARCHAR2 )
RETURN VARCHAR2
IS
OUT_REAL_NM VARCHAR2(100);
TYPE V_ARR IS TABLE OF VARCHAR2(10);
V_FIRST V_ARR;
V_LAST V_ARR;
V_MID V_ARR;
BEGIN
V_LAST := V_ARR('김' , '이' , '박' , '최' , '정'
, '강' , '조' , '윤' , '장' , '임'
, '오' , '한' , '신' , '서' , '권'
, '황' , '안' , '송' , '유' , '홍'
, '전' , '고' , '문' , '손' , '양'
, '배' , '조' , '백' , '허' , '남');
V_MID := V_ARR('민' , '현' , '동' , '인' , '지'
, '현' , '재' , '우' , '건' , '준'
, '승' , '영' , '성' , '진' , '준'
, '정' , '수' , '광' , '영' , '호'
, '중' , '훈' , '후' , '우' , '상'
, '연' , '철' , '아' , '윤' , '은');
V_FIRST := V_ARR('유' , '자' , '도' , '성' , '상'
, '남' , '식' , '일' , '철' , '병'
, '혜' , '영' , '미' , '환' , '식'
, '숙' , '자' , '희' , '순' , '진'
, '서' , '빈' , '정' , '지' , '하'
, '연' , '성' , '공' , '안' , '원');
SELECT SUBSTR(V_LAST(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
V_MID(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
V_FIRST(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
V_MID(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
V_FIRST(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0))
, V_FROM, V_TO)
INTO OUT_REAL_NM
FROM DUAL;
RETURN OUT_REAL_NM;
END;
인자값인 V_FROM 과 V_TO 는 외자 , 4자리 한글이름이 있듯이 GET_KORNM('1' , '2') , GET_KORNM('1' , '4') 처럼 사용한다.
SELECT GET_KORNM('1' , '3') FROM DUAL;
결과 : 송우순
REFERENCE:
http://www.gurubee.net/lecture/1400
http://rocabilly.tistory.com/275
http://cyh0214.tistory.com/entry/%EB%AC%B4%EC%9E%91%EC%9C%84-%ED%95%9C%EA%B8%80%EC%9D%B4%EB%A6%84-%EB%A7%8C%EB%93%A4%EA%B8%B0
댓글
댓글 쓰기