오라클 Database 03
Updated:
유용한 SQL 함수 정리
*평소 헷갈리거나 몰랐던 명령어들만 정리한다.
날짜 함수
SELECT SYSDATE FROM DUAL; -- 오늘 날짜
/* 둘 사이 기간(일자) 계산 */
SELECT MONTHS_BETWEEN(SYSDATE, HIREDATE) FROM EMP;
/* 특정 개월 수를 더한 날짜 계산 */
SELECT ENAME, HIREDATE, ADD_MONTHS(HIREDATE, 4) FROM EMP;
/* 해당 날짜부터 시작하여 다음 요일에 해당하는 날짜를 구함*/
SELECT SYSDATE, NEXT_DAY(SYSDATE, '수요일') FROM DUAL;
/* 두번째 인자값이 한글일 경우는 일, 월, 화, 수, 목 등으로 표시하고, 영문판인 경우는 SUN, MON, TUE 등으로 표시한다. 문자대신 요일을 숫자로 표현하는 경우는 일요일은 7, 월요일은 1, 화요일은 2 식으로 1부터 7까지의 숫자만 표현 가능하다. 만약 두번째 인자값에 '금'이라 작성했는데 오류가 날 경우는 [ALTER SESSION SETNLS_LANGUAGE=Korean;]의 명령문을 실행한다. */
/*해당 달의 마지막 날짜를 구함 */
SELECT HIREDATE, LAST_DAY(HIREDATE) FROM EMP;
형변환 함수
- 숫자, 문자, 날짜 데이터 형을 다른 데이터형으로 변환
- 출력 형식
#### 1. TO_CHAR
*날짜 또는 숫자를 문자형으로 변환
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD, HH24:MI:SS') FROM DUAL;
SELECT (SAL, 'L999,999') FROM EMP; -- 출력예시)
2. TO_DATE
*문자형을 날짜형으로 변환
SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE=TO_DATE(19810220, 'YYYYMMDD');
3. TO_NUMBER
SELECT TO_NUMBER('20,000', '99,999')-TO_NUMBER('10,000', '99,999') FROM DUAL;
DECODE & CASE
*DECODE는 조건이 일치하는 경우만 적용.
*CASE는 비교 연산자를 이용하여 조건 제시 및 범위 지정이 가능
1. DECODE
*C의 SWITCH ~ CASE와 유사
SELECT DEPTNO, DECODE(DEPTNO, 10, 'A', 20, 'B', 'DEFAULT') FROM EMP ORDER BY DEPTNO;
SELECT ENAME, DEPTNO, DECODE(DEPTNO, 10, 'ACCOUNTING', 20, 'RESEARCH', 30, 'SALES', 40, 'OPERATIONS') AS DNAME FROM EMP;
2. CASE
*if ~ else랑 유사
SELECT ENAME, DEPTNO, CASE WHEN DEPTNO=10 THEN 'ACCOUNTING' WHEN DEPTNO=20 THEN 'RESEARCH' WHEN DEPTNO=30 THEN 'SALES' WHEN DEPTNO=40 THEN 'OPERATIONS' END AS ENAME FROM EMP;