데이터 처리와 가공을 위한 오라클 함수
1) 단일행 함수(single-row function) : 데이터가 한 행씩 입력되고 입력된 한 행당 결과가 하나씩 나오는 함수
2) 다중행 함수(multiple-row function): 여러 행이 입력되어 하나의 행의 결과로 반환되는 함수
문자 데이터를 가공하는 문자함수
UPPER() : 소문자 -> 대문자
LOWER() : 대문자 -> 소문자
INITCAP() : 첫글자만 대문자로
참고) DUAL 테이블
INSTR(컬럼, '찾는 키워드')
INSTR(컬럼, '찾는 키워드', 검색 시작 위치)
참고)
indexOf와 비슷 - 특정 문자열 위치를 찾음
REPLACE(컬럼, '찾는 문자열','치환된 문자열')
LPAD(컬럼, 문자열, 자리수, '채워넣을 문자');
2) RPAD : 오른쪽 패딩
RPAD(컬럼 또는 문자열, 자리수, '채워넣을 문자')
-> 문자열 2개를 1개로 결합
-> ENAME||':'||JOB
SELECT EMPNO, ENAME, JOB, CONCAT(CONCAT(ENAME, ':'), JOB) FROM EMP;
SELECT EMPNO, ENAME, JOB, ENAME || ' : ' || JOB FROM EMP;
SELECT TRIM(' ABC ') || 'DEF' FROM DUAL;
SELECT TRIM(TRAILING FROM' ABC ') || 'DEF' FROM DUAL;
SELECT TRIM(LEADING FROM' ABC ') || 'DEF' FROM DUAL;
TRIM(LEADING FROM '*') : 왼쪽 문자 제거
SELECT TRIM(LEADING '_' FROM'_____ABC_____') || 'DEF' FROM DUAL;
1.특정 위치에서 반올림하는 ROUND
2.특정 위치에서 버리는 TRUNC 함수
TRUNC: 절사
3.지정한 숫자와 가까운 정수를 찾는 CEIL, FLOOR 함수
CEIL : 올림
FLOOR : 버림
1) 날짜 데이터 + 숫자 : 숫자만큼 일수가 더해진다.
2) 날짜 데이터 - 숫자 : 숫자만큼 일수가 빼진다.
3) 날짜 데이터 - 날짜 데이터 : 날짜 사이 일수 차이
4) 날짜 데이터 + 날짜 데이터 : 오류 발생
SYSDATE : 현재 시스템의 날짜 시간
-월 단위로 가감
SELECT HIREDATE, MONTHS_BETWEEN(SYSDATE, HIREDATE) FROM EMP;
NEXT_DAY(날짜, 요일) : 다음 요일의 날짜
SELECT NEXT_DAY(SYSDATE, '목') "다음 목요일" FROM DUAL;
참고) DAY: 요일
LAST_DAY(날짜) : 날짜에 해당하는 월의 마지막 일자
SELECT LAST_DAY(SYSDATE) "마지막 일자" FROM DUAL;
SELECT '1000' + 200 FROM DUAL;
-> 형식을 오라클이 충분히 파악 가능한 경우
SELECT EMPNO, ENAME, TO_CHAR(SAL, '$999,999') FROM EMP;
SELECT TO_NUMBER('1,000,000', '999,999,999') + 200 FROM DUAL;
형식
YYYY -> 4자리 연도 : 2024
YY -> 2자리 연도 24
RRRR -> 4자리 연도
RR -> 2자리 연도
MM : 월
DD : 일
HH24 : 24시간 표기 시간
HH12 / HH : 12시간 표기 시간
MI : 분
SS : 초
NULL 처리 함수
-연산 X
100 + NULL
1. NVL 함수
NVL(컬럼, 기본값)
SELECT
EMPNO, ENAME, SAL, COMM,
SAL * 12 + NVL(COMM,0) 연봉
FROM EMP;
SELECT
EMPNO, ENAME, SAL, COMM,
SAL * 12 + NVL(COMM, 0) 연봉,
NVL2(COMM, 'O', 'X') "커미션 유무"
FROM EMP;
-switch ~ case와 유사한 문법
SELECT EMPNO, ENAME, JOB, SAL,
DECODE(JOB,
'MANAGER', SAL * 1.1,
'SALESMAN', SAL * 1.05,
'ANALYST', SAL,
SAL * 1.03) "내년 급여"
FROM EMP;
SELECT EMPNO, ENAME, JOB, SAL,
CASE JOB
WHEN 'MANAGER' THEN SAL * 1.1
WHEN 'SALESMAN' THEN SAL * 1.05
WHEN 'ANALYST' THEN SAL
ELSE SAL * 1.03
END "내년 급여"
FROM EMP;