728x90
반응형

서론

오늘은 보안상의 이유로 기존 데이터를 익명화하기 위하여 데이터를 랜덤값 처리 했다.

종종 테스트용 데이터를 생성하기 위하여 랜덤 함수를 사용함으로 정해 두는 것이 좋을 듯싶다.

 

본론

아래 예시들을 작성할 텐데, 작성하기 전에 사용되는 함수에 대해서 알아보자

 

dbms_random.string

dbms_random.string 함수는 지정된 길이와 문자열 타입으로 랜덤한 문자열을 생성하는 오라클 함수이다.

 

TRUNC

TRUNC 함수는 숫자를 지정한 자릿수로 절삭하여 반환하는 함수로, 주로 숫자를 다룰 때 활용된다.

 

예시

1. 랜덤한 문자열 생성하기

#이 쿼리는 길이가 10인 랜덤한 알파벳 문자열을 생성
SELECT dbms_random.string('X', 10) AS random_string FROM dual;

 

2. 랜덤한 숫자 생성하기

#이 쿼리는 1~100사이 랜덤한 정수 생성
SELECT TRUNC(DBMS_RANDOM.VALUE(1, 100)) AS random_number FROM dual;

 

3. 랜덤한 날짜 생성하기

#이 쿼리는 현재 날짜로부터 1~365일 이전의 날짜 중에서 랜덤한 날짜 생성
SELECT TRUNC(SYSDATE - DBMS_RANDOM.VALUE(1, 365)) AS random_date FROM dual;

 

4. 랜덤한 이메일 주소 생성하기

#이 쿼리는 알파벳 문자열로 구성된 6자리의 랜덤한 문자열에 '@example.com'을 추가하여 랜덤한 이메일 주소를 생성
SELECT dbms_random.string('A', 6) || '@example.com' AS random_email FROM dual;

 

5. 랜덤한 성별 생성하기

#이 쿼리는 랜덤으로 'Male' 또는 'Female'을 선택하여 성별을 생성
SELECT CASE WHEN DBMS_RANDOM.VALUE(0, 1) < 0.5 THEN 'Male' ELSE 'Female' END AS random_gender FROM dual;

 

6. 업데이트 쿼리를 통해 활용하기

/*
id가 test인 행에 대해서 
id = 랜덤한 알파벳 문자열 6자리 + 11
pw = 랜덤한 알파벳 문자열 6자리 + 100부터 125까지 랜덤한 정수
*/

UPDATE TABLENAME
SET id = dbms_random.string('A',6)||11,
    pw = dbms_random.string('A',6)||TRUNC(DBMS_RANDOM.VALUE(100,125))
WHERE id = 'test';

 

결론

기존 데이터 익명화, 테스트용 데이터 생성, PW 초기화와 같은 곳에 활용하면 유용할 것 같다 :)


728x90
반응형