⇒ 기본 예제
-- 콤마 예제
SELECT TO_CHAR(123456789,'999,999,999') comma FROM DUAL; -- 결과 : 123,456,789
-- 소숫점 예제
SELECT TO_CHAR(123.4567895,'999,999,999.99') period FROM DUAL; -- 결과 : 123.46
-- $ 표시 예제
SELECT TO_CHAR(12345678,'$999,999,999') dollar FROM DUAL; -- 결과 : $12,345,678
-- Local 화폐 표시 예제 (한국의 경우 ₩로 자동 변환 됨)
SELECT TO_CHAR(12345678,'L999,999,999') local FROM DUAL; -- 결과 : ₩12,345,678
-- 왼쪽에 0을 삽입
SELECT TO_CHAR(123,'09999') zero FROM DUAL; -- 결과 : 00123
-- 10진수 -> 16진수로 변환
SELECT TO_CHAR(123,'XXXX') hexadecimal FROM DUAL; -- 결과 : 7B
⇒ 날짜 함수 변형 예제
-- 년,월,일,시,분,초 예제
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') "sysdate"
FROM DUAL; -- 결과 : 2024-02-28 22:54:20
-- 365일 또는 366일 중 몇 일째인지 조회
SELECT TO_CHAR(SYSDATE, 'DDD') "Day of year" FROM DUAL; -- 결과 : 059
-- 53주 중 몇 주차 인지 조회
SELECT TO_CHAR(SYSDATE, 'IW') "Week of year" FROM DUAL; -- 결과 : 09
-- 해당 월의 이름 조회
SELECT TO_CHAR(SYSDATE, 'MONTH') "Name of month" FROM DUAL; -- 결과 : 2월
-- DATE 타입으로 변환하는 예제
SELECT TO_DATE('2011-01-01','RRRR-MM-DD') FROM DUAL; -- 결과 : 11/01/01
SELECT TO_DATE('2011-01-01','YYYY-MM-DD') FROM DUAL; -- 결과 : 11/01/01
-- 문자를 숫자로 변환하는 간단한 예제이다.
SELECT TO_NUMBER('01210616') FROM DUAL; -- 결과 : 1210616
-- 16진수 -> 10진수로 변환
SELECT TO_NUMBER('F89C','XXXX') hexadecimal FROM DUAL; -- 결과 : 63644
TO_CHAR / TO_DATE / TO_NUMBER 모두 실무에서 많이 사용하고 있다.
실제 DB 컬럼의 TYPE과 들어오는 데이터의 형태는 비슷하지만, 들어오는 데이터 타입이 실제 DB 컬럼의 타입과 다른 경우가 빈번히 있다.
이럴 경우, 형 변환 함수를 써야 하고, 이것이 오늘 다뤄봤던 변환 함수에 들어와 있다.
실무에서 나름 꽤나 사용하고 있어서, 이 정도면 충분하다고 생각했는데 오늘 학습을 해보니 많이 부족하다는 것을 느꼈다.
특히, 표 1과 표 2에서 나온 FORMAT들을 아직 많이 사용하지 못해봤다는 생각이 컸다.
앞으로 경력을 쌓으면서 데이터를 다루게 될 가능성이 매우 크다는 것을 안다. 이에 따라 형 변환도 많이 할 수밖에 없는데, 이 챕터를 보면서 나아가면 문제 없을 것 같다.