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

[ 출처 ] http://blog.naver.com/tangamjaelt?Redirect=Log&logNo=36966369

'DataBase > PLSql' 카테고리의 다른 글

[PL/Sql] PL/Sql 패키지 (Package)  (0) 2012.08.13
[PL/Sql] PL/Sql 프로시저?  (0) 2012.08.13
[PL/Sql] PL/Sql 조건문 사용  (0) 2012.08.13
[PL/Sql] PL/Sql 패키지 사용 예  (0) 2012.08.13
[PL/Sql] PL/Sql 함수  (0) 2012.08.13

+ Recent posts