개발자 첫걸음

[ORACLE] - 문자나 숫자 뒤에 *을 붙여 암호화 하듯이 표현하는 법

프로아마추어 2020. 11. 16. 17:39

 

 

 

먼저, 책에 있는 예제를 예로 들어볼 것이다.

 

 

 

 

EMP테이블에서 ENAME(직원의 이름)의 길이가 5이상 6이하에서

ENAME은 ALLEN의 경우 A****로 표기 되도록 하고, EMPNO(회원번호)는 1234의 경우 12**로 표기 되도록하라.

 

 

 

 

1) 나의 경우에는 RPAD 오른쪽으로 *을 붙여주는 함수를 사용하였다.

RPAD의 표현법은 다음과 같다.(대상이 되는 열이나 데이터, 데이터를 표현할 총 길이, 남은 길이의 표기될 문자)

 

 

2) LENGTH(COLUMN_NAME) 해당 컬럼 열의 문자 길이를 같이 혼합해준다.

 

 

3) 나머지 문자를 *로 대체해주어야 한다.

 

 

 

 

하지만 RPAD(ENAME, LENGTH(COLUMN_NAME), '*')로 써주게 되면 아무런 변화도 없을 것이다. 

왜냐하면 ENAME과 LENGTH의 길이가 같으므로 *이 채워지지 않기 때문이다.

 

그래서 SUBSTR(EMPNO, 표현할 문자의 시작점, 표현할 문자의 끝점)을 사용해주면,

SUBSTR(EMPNO, 1, 2) 1234의 경우 12까지만 표현되어질 것이다.

 

ENAME도 위와 같은 방식으로 표현해주면 될 것이다.

 

BETWEEN 이상(조건문) AND 이하(조건문)

 

 

 

 

 

SELECT  EMPNO
        ,RPAD(SUBSTR(EMPNO, 1, 2), LENGTH(EMPNO), '*') MASKING_EMPNO
        ,ENAME
        ,RPAD(SUBSTR(ENAME, 1, 1) ,LENGTH(ENAME), '*') MASKING_ENAME
FROM EMP
WHERE LENGTH(ENAME) BETWEEN 5 AND 6;

 

 

 

 

결과값