https://www.youtube.com/user/newlec1의 내용을 정리해서 포스팅합니다.
숫자 / 문자열 / 날짜를 자유자재로 바꾸는 형식 변환 함수에 대해 알아보도록 하겠습니다.
[ TO_CHAR(NUMBER) ]
- NUMBER 형식을 문자열(VARCHAR2)로 변환하는 함수이다.
* SELECT TO_CHAR(12345678, '$99,999,999,999.99') FROM DUAL;
- 두 번째 인자는 첫 번째 인자의 숫자보다 같거나 길어야 한다. 만약 더 길다면 나머지 부분에 공백이 생긴다.
* SELECT TO_CHAR(12345678.345, '$99,999,999,999.99') FROM DUAL;
- '$12,345,678.35' 출력한다. 지정한 소숫점 자리가 2이므로 반올림돼서 출력한다.
EX) 숫자 123456789를 공백없이 '원'으로 표현해라. (단, TO_CHAR 함수의 두 번째 인자는 숫자보다 길어야 한다)
SELECT TRIM(TO_CHAR(123456789, '9,999,999,999')) || '원' FROM DUAL;
[ TO_CHAR(DATETIME) ]
- DATE 형식을 문자열(VARCHAR2)로 변환하는 함수이다.
- 두 번째 인자로는 포맷 문자를 지정할 수 있다. 아래 표를 확인하자.
* SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
- 일회용이다.
- 일회용이 아닌 영원히 위와 같은 포맷 형식으로 지정을 하려면 SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; 을 통해 세션을 지정해주면 된다.
[ TO_DATE(문자열, 날짜포맷) ]
- 문자열을 날짜 형식으로 변환하는 함수이다.
* SELECT TO_DATE('1995-01-01') FROM DUAL;
- 이렇게 사용해도 날짜 포맷으로 인식을 해서 변환이 가능하지만, SELECT TO_DATE('1995-01-01 15:30:30') FROM DUAL;로 하면 에러가 난다.
- 인식을 해서 에러를 없애려면 SELECT TO_DATE('1995-01-01 15:30:30', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;로 구문을 작성하면 된다.
[ TO_TIMESTAMP(문자열) ]
- 문자열을 숫자형식으로 변환하는 함수이다.
* SELECT TO_TIMESTAMP('1995-01-01 15:30:30', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
[ TO_NUMBER(문자열) ]
- 문자열을 숫자형식으로 변환하는 함수이다.
* SELECT TO_NUMBER('25') + 10 FROM DUAL;
- 35 출력