본문 바로가기

DB/ORACLE

[ORACLE] 3. 단일행 함수 - 형변환 함수

*오라클에서 사용하는 데이터 타입


 데이터 타입

설명 

CHAR(n)

고정 길이의 문자를 저장한다. 최댓값은 2000byte. 

 VARCHAR(n)

변하는 길이의 문자를 저장한다. 최댓값은 4000byte. 

NUMBER(p, s)

숫자 값을 저장. p는 전체릿수로 1~38자리까지 가능하고 s는 소수점이하 자릿수로 -84 ~ 127자리가 가능.

DATE 

총 7Byte로 BC 4712년 1월 1일부터 AD 9999년 12월 31일까지의 날짜를 저장. 

 LONG

가변 길이의 문자를 저장하며 최대 2GB까지 저장할 수 있다. 

CLOB

가변길이의 문자를 저장하면 최대 4GB까지 저장할 수 있다. 

BLOB

가변 길이의 바이너리 데이터를 최대 4GB까지 저장할 수 있다. 

 RAW(n)

원시 이진 데이터로 최대 2000byte까지 저장할 수 있다. 

 LONG RAW(n)

원시 이진 데이터로 최대 2GB까저장할 수 있다. 

 BFILE

외부 파일에 저장된 데이터로 최대 4GB까지 저장할 수 있다. 


1. 묵시적 형 변환

 - 묵시적 형 변환이라는 것은 오라클이 자동으로 형 변환을 시킨다는 뜻.


*내부적으로 아래와 같은 현상이 생긴다는 뜻이다. 

SELECT 1+TO_NUMBER('1') FROM DUAL;


 - 위 그림에서 1은 숫자 뒤의 '1'은 문자이다. 즉 숫자+'문자'를 계산하라고 요청한 것이다.

 - 원래 산술 연산자는 숫자와 문자를 연산할 수 없기에 이런 요청이 들어오면 오라클은 에러를 발생시키지만 위처럼 숫자처럼 생긴 문자는 오라클이 자동으로 문자를 숫자로 바꾼후 연산을 수행한다.

 - 위와 같은 현상을 묵시적인 형변환이라고 부르지만 튜닝에서 뜻하지 안헥 속도가 느려지는 주범이 될 수 있다. 

 - 묵시적 형 변환은 숫자처럼 생긴 문자만 변환해주고 그 외에는 에러를 발생시킨다.


2. 명시적 형 변환

 - 명시적 형 변환은 사람이 수동으로 지정하여 형 변환을 시킨다는 것.




 - 형 변환 함수는 TO_CHAR, TO_NUMBER, TO_DATE의 세 가지로 나누어진다.

 - TO_CHAR 함수는 숫자와 날짜를 문자로 변환해 주는 두 가지 기능을 한꺼번에 가지고 있다.


1) TO_CHAR

 - 문법 : TO_CHAR(원래 날짜, '원하는 모양')

 - 년도 : 'YYYY' - 연도를 4자리로 표현 (예) 1999

'RRRR' - 2000년 이후에 Y2K버그로 인해 등장한 새로운 날짜 표기법

'YY' 연 - 도를 끝의 2자리만 표시 (예)99

'YEAR' - 연도의 영문 이름 전체를 표시




  - 월 : 'MM' - 월을 숫자 2자리로 표현 (예)10

     'MON' - 월을 뜻하는 영어 3글자로 표시 (예)OCT

     'MONTH' - 월을 뜻하는 영어 이름 전체를 표시




  - 일 : 'DD' -일을 숫자 2자리로 표시 (예) 12

     'DAY' - 요일에 해당하는 영어 명칭을 표시

     'DDTH' - 몇 번째 날인지를 표시

 


  - 시간 : HH24 - 하루를 24시간으로 표시

  HH - 하루를 12시간으로 표시

분 : MI로 표시

초 : SS로 표시



2) TO_CHAR 함수(숫자를 문자로 형 변환하기)


 종류

의미 

사용 예 

결과 

 9

9 하나당 1자리를 의미 

TO_CHAR(1234, '99999') 

1234 

 0

빈 자리를 0으로 표시 

TO_CHAR(1234, '099999') 

001234 

 $

$ 표시를 붙여서 표시 

TO_CHAR(1234, '$9999') 

$1234 

 .

소수점 이하를 표시 

TO_CHAR(1234, '9999.99') 

1234.00 

 ,

천 단위 구분 기호를 표시

TO_CHAR(12345, '99,999') 

12,345 





3) TO_NUMBER 함수

문법 : TO_NUMBER('1')



4) TO_DATE

문법 : TO_DATE('문자', '날짜포맷')


*PROFESSOR 테이블을 사용하여 1990년 이전에 입사한 교수명과 입사일, 현재 연봉과 10%인상 후 연봉을 출력

연봉은 상여금(BONUS)를 제외한 (PAY*12)로 계산하고 연봉과 인상 후 연봉은 천 단위 구분기호를 추가하여 출력













'DB > ORACLE' 카테고리의 다른 글

* JOIN 원리  (2) 2015.07.14
[ORACLE] 2. 단일행 함수 - 날짜함수  (0) 2015.02.10
[ORACLE] 1. 단일행 함수 - 숫자함수  (0) 2015.02.10