[본문스크랩] PL/SQL (9) - 변환 함수 사용

오라클 | 2007. 12. 21. 15:29
Posted by 시반

###################################################################################################

#   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으로 나누는 코드

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)