[SQL] 030. 문자형으로 데이터 유형 변환하기
Updated:
초보자를 위한 SQL 200제 교재를 토대로 공부한 내용입니다.
오라클 SQL을 기반으로 합니다.
실습에 사용한 테이블은 정보문화사 홈페이지에서 받을 수 있습니다.
TO_CHAR
는 날짜형, 숫자형 데이터를 문자형 데이터로 변환 한다.
[예시]
HIREDATE(입사일자)로 부터 연도, 월, 일, 요일을 분리한다.
SAL(월급)은 천 단위당 콤마를 표시해서 백 만 단위까지 출력한다.
숫자 9는 0~9까지 어떤 숫자도 상관 없음을 의미하며 자릿수 만큼 기입한다.
-- 날짜 출력 포맷 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD';
-- 요일 출력 포맷 변경
ALTER SESSION SET NLS_DATE_LANGUAGE = KOREAN;
-- 입사일을 분리, 월급 천 단위로 출력
SELECT ENAME, HIREDATE,
TO_CHAR(HIREDATE,'YYYY') AS 연도,
TO_CHAR(HIREDATE,'MM') AS 월,
TO_CHAR(HIREDATE,'DD') AS 일,
TO_CHAR(HIREDATE,'DAY') AS 요일,
TO_CHAR(SAL, '9,999,999') AS 월급
FROM EMP;
[결과]
월급은 TO_CHAR
로 문자형으로 변경되어서 왼쪽으로 정렬되어 나타난다.
ENAME | HIREDATE | 연도 | 월 | 일 | 요일 | 월급 |
---|---|---|---|---|---|---|
KING | 1981-11-17 | 1981 | 11 | 17 | 화요일 | 5,000 |
BLAKE | 1981-05-01 | 1981 | 05 | 01 | 금요일 | 2,850 |
CLARK | 1981-05-09 | 1981 | 05 | 09 | 토요일 | 2,450 |
JONES | 1981-04-01 | 1981 | 04 | 01 | 수요일 | 2,975 |
MARTIN | 1981-09-10 | 1981 | 09 | 10 | 목요일 | 1,250 |
ALLEN | 1981-02-11 | 1981 | 02 | 11 | 수요일 | 1,600 |
TURNER | 1981-08-21 | 1981 | 08 | 21 | 금요일 | 1,500 |
JAMES | 1981-12-11 | 1981 | 12 | 11 | 금요일 | 950 |
WARD | 1981-02-23 | 1981 | 02 | 23 | 월요일 | 1,250 |
FORD | 1981-12-11 | 1981 | 12 | 11 | 금요일 | 3,000 |
SMITH | 1980-12-11 | 1980 | 12 | 11 | 목요일 | 800 |
SCOTT | 1982-12-22 | 1982 | 12 | 22 | 수요일 | 3,000 |
ADAMS | 1983-01-15 | 1983 | 01 | 15 | 토요일 | 1,100 |
MILLER | 1982-01-11 | 1982 | 01 | 11 | 월요일 | 1,300 |
[예시2]
날짜 컬럼에서 연도/월/일 등을 분리할 때 EXTRACT
도 사용 가능하다.
-- 입사일 분리2 EXTRACT
SELECT ENAME,
EXTRACT(YEAR FROM HIREDATE) AS 연도,
EXTRACT(MONTH FROM HIREDATE) AS 월,
EXTRACT(DAY FROM HIREDATE) AS 일
FROM EMP;
[결과2]
ENAME | 연도 | 월 | 일 |
---|---|---|---|
KING | 1981 | 11 | 17 |
BLAKE | 1981 | 5 | 1 |
CLARK | 1981 | 5 | 9 |
JONES | 1981 | 4 | 1 |
MARTIN | 1981 | 9 | 10 |
ALLEN | 1981 | 2 | 11 |
TURNER | 1981 | 8 | 21 |
JAMES | 1981 | 12 | 11 |
WARD | 1981 | 2 | 23 |
FORD | 1981 | 12 | 11 |
SMITH | 1980 | 12 | 11 |
SCOTT | 1982 | 12 | 22 |
ADAMS | 1983 | 1 | 15 |
MILLER | 1982 | 1 | 11 |
[예시3]
다음 예시는 L을 사용해서 SAL(월급)을 통화 형태로 출력한다.
그리고 TO_CHAR
를 이용해서 WHERE
절에 조건을 추가한다.
-- L을 붙이면 통화 형태로 출력 가능
-- WHERE절 활용 입사년도가 1981년인 사원
SELECT ENAME, HIREDATE, TO_CHAR(SAL, 'L999,999') AS 월급
FROM EMP
WHERE TO_CHAR(HIREDATE,'YYYY') = '1981';
[결과3]
ENAME | HIREDATE | 월급 |
---|---|---|
KING | 1981-11-17 | $5,000 |
BLAKE | 1981-05-01 | $2,850 |
CLARK | 1981-05-09 | $2,450 |
JONES | 1981-04-01 | $2,975 |
MARTIN | 1981-09-10 | $1,250 |
ALLEN | 1981-02-11 | $1,600 |
TURNER | 1981-08-21 | $1,500 |
JAMES | 1981-12-11 | $950 |
WARD | 1981-02-23 | $1,250 |
FORD | 1981-12-11 | $3,000 |
Leave a comment