[본문스크랩] PL/SQL (9) - 변환 함수 사용
###################################################################################################
# source site : blog.naver.com/tangamjaelt
# master : 강용운
# email : tangamjaelt@korea.com
# last release : 2007.05.28
###################################################################################################
1. 변환 함수
- 함수 중에서 가장 널리 사용하고 중요한 함수이다.
- 다른 데이터형으로 변환시킨다.
2. TO_DATE
- TO_DATE(문자스트링, 서식, NLS_DATE_LANGUAGE)
- 서식을 지정하지 않으면 기본 DATE 형식인 DD-MMM-YY 가 적용된다.
- 변환될 문자는 220자를 넘을 수 없다.
- 12시간제 / 24시간제 중 하나를 선택한다.
- 대표 변환마스크.
MM : 01~12로 월 표시.
MONTH : 월 이름을 9자리 문자로 할당. 나머지 문자는 공백.
MON : 월 이름을 3자리 문자로
D : 1주를 1일~7일
DD : 1달을 1일~31일
DDD : 1년을 1일~365일
DAY : 요일을 철자대로 표기하는 것. 항상 9자리를 차지. 남는 오른쪽 자리는 공백으로
HH, HH12 : 하루를 1~12까지의 시간으로 나타냄
HH24 : 하루를 0~23까지의 시간으로 나타냄
MI : 1시간을 0~59분까지 나타냄
SS : 1분을 0~59초까지 나타냄
SSSS : 자정부터 지난 시간을 모두 초단위로 계산한다.
3. TO_CHAR
- 숫자나 날짜를 문자로 변환한다.
- 날짜의 형식을 기본형식인 DD-MMM-YY 와 다르게 출력하고자 할 때.
- MONTH, Month, month => MAY, May, may
4. TO_NUMBER
- 문자를 숫자로 변환한다.
- 문자로 저장되어 있는 입사일 기준으로 근속년수를 계산한다고 하면, 입사일을 TO_NUMBER로 변환하여 계산해야 한다.
- 너무 자주 사용되는 곳에는 변환 과정에서 시스템 부하를 줄 수 있다.
- 대표 변환 마스크
9 : 각 9는 의미있는 자리로 간주됨. 앞에 나오는 0은 공백으로 취급.
0 : 숫자 앞이나 뒤에 0이 있을 경우, 0을 취급하기 위함. 09999, 99990
$ : 통화표시. $9999
B : 정수가 0이 아니면 정수의 일부를 공백으로 반환한다. 이 서식에 0을 사용하면 앞에 오는 0은 무시된다. B9999
MI : 값이 음수이면 '-'부호 갖고, 값이 양수이면 끝에 공백을 갖는다. 9999MI
S : 음수면 '-', 양수면 '+' 부호를 갖는다. S9999, 9999S
PR : 음수면 < > 로 묶고, 양수면 공백 추가. 9999PR
D : 소수점 위치 지정. 99D99
G : 분리자를 지정(,) 9G999G999
C : 지정한 위치에 ISO 통화기호를 반환한다. C99
L : 지역 통화기호를 반환한다. L9999
, : 지정한 위치에 콤마 삽입. 9,999,9999
. : 그룹 분리자에 관계 없이 소수점의 위치를 지정. 99.99
V : 10의 n 승. V뒤에 숫자가 10을 곱할 갯수. 999V99
EEEE : 지수 표시. 9.99EEEE
RM, rm : 값을 대문자,소문자로 된 로마숫자로 표시
FM : 앞과 뒤의 공백을 제거. FM9,999.99
5. Sample
SQL> select TO_DATE('070528','MMDDYY') "Today" from dual;
Today
---------
05-JUL-28
SQL> select TO_DATE('March 30', 'MONTH DD') from dual;
TO_DATE('
---------
30-MAR-07
SQL> select TO_DATE('28-DEC-82') "Birthday" from dual;
Birthday
---------
28-DEC-82
SQL> select TO_DATE('070528','YYMMDD')+3 from dual;
TO_DATE('
---------
31-MAY-07
SQL> select TO_CHAR(SYSDATE, 'MONTH DDTH YYYY') "Now" from dual;
Now
-----------------------
MAY 28TH 2007 ☞ MONTH → 9자리 채움.
SQL> select TO_CHAR(SYSDATE, 'Month DD, Y,YYY') from dual;
TO_CHAR(SYSDATE,'MONTHD
-----------------------
May 28, 2,007
SQL> select TO_CHAR(SYSDATE, 'YYYY-MM-DD') "Now" from dual;
Now
----------
2007-05-28
SQL> select TO_CHAR(SYSDATE, 'YYYY-MM-DD', 'NLS_DATE_LANGUAGE=german') "German" from dual;
German
----------
2007-05-28
SQL> select TO_CHAR(SYSDATE, 'YYYY-MM-DD', 'NLS_DATE_LANGUAGE=korean') "Korean" from dual;
Korean
----------
2007-05-28
SQL> select TO_NUMBER('100.00', '9G999D99') from dual;
TO_NUMBER('100.00','9G999D99')
------------------------------
100
문자 => 숫자변환 후 100으로 나누는 코드
'오라클' 카테고리의 다른 글
[본문스크랩] PL/SQL (11) - 패키지 (Package) (0) | 2007.12.21 |
---|---|
[본문스크랩] PL/SQL (10) - 프로시저 (Procedure) (0) | 2007.12.21 |
[본문스크랩] PL/SQL (8) - 오라클 내장 함수 (0) | 2007.12.21 |
[본문스크랩] PL/SQL (7) - 조건문 사용 (0) | 2007.12.21 |
[본문스크랩] PL/SQL (6) - 패키지 사용의 예 (0) | 2007.12.21 |