Programming/오라클[SQL]

오라클[sql] 형변환

콩king 2022. 8. 22. 12:00

형변환

-      숫자형               문자형        날짜형

- 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;