본문 바로가기

Web/Database

(3)
[Oracle/SQL] NULL 값인 경우 다른 문자(N/A)를 넣기 Q. NULL 값인 경우 다른 문자 넣기 원래 문제: 추가 수당(COMM)이 없는 사원의 추가 수당은 N/A로 출력하세요. A. NULL 처리 함수에는 NVL 함수와 NVL2 함수가 있다. NVL([NULL인지 여부를 검사할 데이터 또는 열(필수)], [앞의 데이터가 NULL일 경우 반환할 데이터(필수]) 이렇게 사용 가능한데, 처음에는 NVL(COMM, 'N/A') 라고 쓰니 에러가 났다. 원인은 역시 데이터타입이 맞지 않아서 발생했던 것 같다. 2가지 방법을 쓸 수 있다. 1. DECODE(NVL(COMM,-1), -1, 'N/A', COMM) AS COMM 2. NVL(TO_CHAR(COMM), 'N/A') AS COMM SELECT EMPNO, ENAME, HIREDATE, NEXT_DAY(ADD..
[Oracle/SQL] 0이 아니라 0000으로 채우기 Q. 값이 존재하지 않을 경우 0000으로 채우기 원래 문제: EMP 테이블의 모든 사원을 대상으로 직속 상관의 사원번호(MGR)을 다음과 같은 조건을 기준으로 변환해서 CHG_MGR 열에 출력하세요. - 직속 상관의 사원 번호가 존재하지 않을 경우: 0000 - 직속 상관의 사원 번호 앞 두 자리가 75일 경우: 5555 - 직속 상관의 사원 번호 앞 두 자리가 76일 경우: 6666 - 직속 상관의 사원 번호 앞 두 자리가 77일 경우: 7777 - 직속 상관의 사원 번호 앞 두 자리가 78일 경우: 8888- 그 외 직속 상관 사원 번호의 경우: 본래 직속 상관의 사원 번호 그대로 출력 A. 처음엔 case 문을 써서 when mgr is null then 0000 이라고 했다. 그러나 0000이 ..
[Oracle/SQL] 문자열의 뒷부분을 *로 채우기 Q. 앞 두 자리 외 뒷자리를 *로 채우기 A. 2가지 방법을 쓸 수 있다. 1. SUBSTR을 사용후 뒤에 **을 붙이기 2. 역시 SUBSTR 을 사용한 후에 RPAD로 남은 자리를 '*'로 채워넣기 SELECT EMPNO, SUBSTR(EMPNO, 1, 2) || '**' AS MASKING_EMPNO, ENAME, RPAD(SUBSTR(ENAME, 1, 1), LENGTH(ENAME), '*') AS MASKING_ENAME FROM EMP WHERE LENGTH(ENAME) >= 5 AND LENGTH(ENAME) < 6;