TO_CHAR 함수는 DATE형, NUMBER형을 문자 타입으로 변환하는 함수이다. TO_CHAR(number), TO_CHAR(number, format), TO_CHAR(date, format) 형식으로 사용할 수 있다.
NUMBER 타입의 데이터를 아래와 같이 특정 형식의 문자 타입으로 변환 할 수 있다.
-- 콤마 예제 SELECT TO_CHAR(12345678,'999,999,999') comma FROM DUAL; -- 소숫점 예제 SELECT TO_CHAR(123.45678,'999,999,999.99') period FROM DUAL; -- $ 표시 예제 SELECT TO_CHAR(12345678,'$999,999,999') dollar FROM DUAL; -- Local 화폐 표시 예제 (한국의 경우 ₩로 자동 변환 됨) SELECT TO_CHAR(12345678,'L999,999,999') local FROM DUAL; -- 왼쪽에 0을 삽입 SELECT TO_CHAR(123,'09999') zero FROM DUAL; -- 16진수로 변환 SELECT TO_CHAR(123,'XXXX') hexadecimal FROM DUAL;
| Format | 예 | 설명 |
|---|---|---|
| , (comma) | 9,999 | 콤마 형식으로 변환 |
| . (period) | 99.99 | 소수점 형식으로 변환 |
| 0 | 09999 | 왼쪽에 0을 삽입 |
| $ | $9999 | $ 통화로 표시 |
| L | L9999 | Local 통화로 표시(한국의 경우 \) |
| XXXX | XXXX | 16진수로 표시 |
DATE 타입의 데이터를 아래와 같이 특정 형식의 문자 타입으로 변환 할 수 있다.
-- 년,월,일,시,분,초 예제 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') "sysdate" FROM DUAL; -- 365일 중 몇 일째인지 조회 SELECT TO_CHAR(SYSDATE, 'DDD') "Day of year" FROM DUAL; -- 53주 중 몇 주차 인지 조회 SELECT TO_CHAR(SYSDATE, 'IW') "Week of year" FROM DUAL; -- 해당 월의 이름 조회 SELECT TO_CHAR(SYSDATE, 'MONTH') "Name of month" FROM DUAL;
| Format | 설명 | Format | 설명 |
|---|---|---|---|
| YYYY | 4자리 연도 | YY | 두자리 연도 |
| D | Day of week (1-7) | DAY | 요일(월,화..) |
| DD | Day of month (1-31) | DDD | Day of year (1-366) |
| MM | 해당월을 01~12로 표시 | MONTH | Name of month |
| WW | Week of year (1-53) | IW | Week of year (1-53) 국제 표준 |
| W | Week of month (1-5) | HH24 | Hour of day (0-23) |
| HH | Hour of day (1-12) | MI | Minute (0-59) |
| SS | Second (0-59) |
"WW"와 "IW" 모두 1년의 몇 주차(1~53)로 조회하는 포맷이지만 "WW" 포맷은 무조건 1일에서 7일까지가 1주차로 시작을 하며, "IW" 포맷은 실제 달력에 맞게 주차가 계산된다.
-- DATE 타입으로 변환하는 예제
SELECT TO_DATE('2011-01-01','RRRR-MM-DD') FROM DUAL;
-- 문자를 숫자로 변환하는 간단한 예제이다.
SELECT TO_NUMBER('01210616') FROM DUAL;
- 강좌 URL : http://www.gurubee.net/lecture/1027
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
아. 공백문제 때문에 고생했는데 그렇게 하면 되는 거엿군요..
덕분에 해결하고 갑니다..
SELECT TO_CHAR(12345678,'L999,999,999')local FROM DUAL;
저는 이부분이 결과가 ?12,345,678 로 나오네요...
혹시몰라서
select * from nls_session_parameters;를 해서 확인해보니..
NLS_CURRENCY가 ? 로 나오는데... 제컴이 잘못된건가요??
초짜인지라 개념들이 좀 두리뭉실한 상태였는데;;
정의가 명확하고 기본형을 적어주셔서 함수들에 대해 좀 더 정확히 알게 되었네요. ^^
잘 보고 갑니다~
관련글들도 마찬가지로 잘 보는 중이에요 +ㅅ+)b