개발 일기
SELECT문 내용 정리 및 활용해보기 4 (feat. 날짜 함수, DECODE) 본문
안녕하세요!
어제에 이어 단일행 함수와 관련된 내용을 추가로 정리 해보겠습니다.
1. 날짜 관련 함수
- 오라클은 날짜 타입을 저장 할 때, 내부적으로 세기, 년, 월, 일, 시, 분, 초 모두 저장
- but, 화면에 표시되는 형식은 기본적으로 (RR/MM/DD) (DD-MON-RR) 이다.
SYSDATE 함수
- 데이터베이스 서버에 설정되어 있는 날짜를 리턴
EX) SELECT SYSDATE FROM DUAL;
SYSTIMESTAMP 함수
- 데이터베이스 서버에 설정되어 있는 날짜+시간 리턴
EX) SELECT SYSTIMESTAMP FROM DUAL;
EXTRACT 함수
- 년, 월, 일, 시, 분, 초 부분 추출 가능
EX) SELECT EXTRACT(YEAR FROM SYSDATE),
EXTRACT(MONTH FROM SYSDATE),
EXTRACT(DAY FROM SYSDATE)
FROM DUAL; -- 년, 월, 일 추출
ROUND, TRUNC 함수
- ROUND 함수 사용 시 절반(15일, 6개월 단위) 이상일 경우 올림
- TRUNC 함수 사용 시 절반 단위 내림
EX) SELECT ROUND(SYSDATE, 'MONTH'), -- 07/08 기준 ROUND 함수 사용 시 15일 미만
ROUND(SYSDATE, 'YEAR'), -- 21/07/08 기준 ROUND 함수 사용 시 6월 이상으로 22년으로 올림
TRUNC(SYSDATE, 'MONTH'),
TRUNC(SYSDATE, 'YEAR')
FROM DUAL;
2. 변환 함수
- 데이터 타입을 다른 데이터 타입으로 변환하는 함수
- TO_CHAR(type [, 'fmt']) : NUMBER 또는 DATE 타입을 'fmt'형식에 맞게 CHAR 타입으로 변환
- TO_NUMBER(char [, 'fmt']) : CHAR 타입을 'fmt'형식에 맞게 NUMBER 타입으로 변환
- TO_DATE(char [, 'fmt']) : CHAR 타입을 'fmt'형식에 맞게 DATE 타입으로 변환
3. 일반 함수
- NVL(expr1, expr2) : expr1이 NULL이면 expr2를 리턴
- NVL2(expr1, expr2, expr3) : expr1이 NULL이 아니면 expr2, NULL이면 expr3를 리턴
EX) SELECT SAL, COMM, NVL(COMM, 0), SAL+NVL(COMM,0) "총 급여" FROM TABLE;
4. DECODE 함수
- 주어진 조건에 맞는 값과 일치하는 CASE를 리턴
-- 주어진 조건 = 'LEE', 일치하는 값 'LEE' , 2000 -> 2000 리턴
EX) SELECT DECODE('LEE', 'KIM', 1000, 'LEE', 2000, 'PARK', 3000) FROM DUAL;
-- NVL과 DECODE 함수를 활용한 코딩 예시
EX) SELECT NVL(DECODE(JOB, 'SALESMAN', SAL*1.6), SAL) "직급별 계산 급여" FROM TABLE;
-> 풀이: DECODE = JOB이 'SALESMAN'과 일치하면 SAL을 *1.6 해라
NVL = DECODE가 NULL이 아니면 SAL값을 넣어라
즉 -> JOB이 SALESMAN인 사람만 찾아서 SAL(급여)1.6 해주고, 나머지는 그대로 적어라
5. CASE 함수
- 여러개 CASE를 주고 해당하는 CASE에 맞을 때 설정한 리턴값을 반환
-- JOB에 따라 SAL 값에 변화를 줌
EX) SELECT (CASE WHEN JOB = 'CLERK' THEN SAL*1.2 -- JOB이 CLERK면 CLERK의 SAL을 1.2 곱해라
WHEN JOB = 'ANALYST' THEN SAL*1.3 -- JOB이 ANALYST면 ANALYST의 SAL을 1.3 곱해라
ELSE SAL -- 나머지는 기존 SAL 그대로
END) FROM TABLE;
감사합니다!
'SQL' 카테고리의 다른 글
SQL의 핵심! JOIN 알아보기(ORACLE JOIN, ANSI JOIN) (0) | 2021.07.11 |
---|---|
SELECT문 내용 정리 및 활용해보기 5 (feat. 그룹함수, 그룹핑) (0) | 2021.07.09 |
SELECT문 내용 정리 및 활용해보기 3 (feat. 단일 행 함수(Function), 문자 함수, 숫자 함수) (0) | 2021.07.07 |
SELECT문 내용 정리 및 활용해보기 2 (feat. 데이터 제한과 정렬) (0) | 2021.07.07 |
SQL의 SELECT문 내용 정리 및 활용해보기 (0) | 2021.07.05 |