오라클[sql] 형변환
형변환
- 숫자형 문자형 날짜형
- TO_NUMBER / TO_CHAR / TO_DATE
- 숫자형 > 문자형 : TO_CHAR()
- 문자형 > 숫자형 : TO_NUMBER()
- 날짜형 > 문자형 : TO_CHAR()
- 문자형 > 날짜형 : TO_DATE()
- 형변환함수( 데이터, '표시형식' )
TO_CHAR
- 날짜형 숫자형을 문자형으로 변환해주는 함수
SELECT sysdate, TO_CHAR(SYSDATE, 'YYYY-MM-DD DAY') FROM dual;
SELECT hiredate, TO_CHAR(hiredate, 'YYYY/MM/DD DAY') FROM emp;
SELECT sysdate, TO_CHAR(SYSDATE, 'YYYY-MM-DD, HH24:MI:SS') FROM dual;
SELECT ename, sal, TO_CHAR(sal, 'L999,999') FROM emp;
TO_DATE
- 문자형을 날짜형으로 변환하는 함수, 연도월일시분초 등등, 기본형 YY/MM/DD
SELECT SYSDATE FROM dual; -- 실제 데이터에는 시분초도 다들어가 있음
SELECT ename, hiredate FROM emp
--WHERE hiredate = 19810220; -- 숫자형과 날짜형은 비교, 연산 등등 불가
WHERE hiredate = TO_DATE('19810220', 'YYYYMMDD');
SELECT TRUNC(SYSDATE-TO_DATE(20220101, 'YYYY/MM/DD')) FROM dual;
TO_NUMBER
- 문자형을 숫자형으로 변환하는 함수
SELECT '20,000'-'10,000' FROM dual;
SELECT TO_NUMBER('20,000', '99,999') - TO_NUMBER('10,000', '99,999') FROM dual;
예제
1. 입사일자에서 입사년도를 출력
SELECT TO_CHAR(hiredate, 'YYYY') FROM emp;
2. 입사일자를 ‘1999년 1월 1일’ 형식으로 출력
SELECT TO_CHAR(hiredate, '""YYYY"년 "MON" "DD"일"') FROM emp;
3. 1981년도에 입사한 사원 검색
SELECT * FROM emp
WHERE TO_CHAR(hiredate, 'YYYY') = 1981;
4. 5월에 입사한 사원 검색
SELECT * FROM emp
WHERE TO_CHAR(hiredate, 'MM') = 5;
5. 급여 앞에 $를 삽입하고 3자리 마다 ,를 출력
SELECT TO_CHAR(sal, '$999,999') AS "급여" FROM emp;