본문 바로가기

IT

[Oracle] 형 변환

Oracle의 형변환에 대하여 알아봅시다.

 

Oracle에서 사용하는 데이터타입

데이터 타입 데이터 타입 설명
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까지 저장

 

형변환이란?

특정한 데이터 타입을 다른 데이터 타입으로 변환하는 것을 의미합니다.
ex) number -> char로 변환 

ex) char -> number로 변환

 

묵시적 형변환

DBMS에서 데이터 타입을 예상하여 DBMS 내부에서 자동으로 변환해주는 것을 의미합니다.

조건절 데이터 타입이 다르면 “우선 순위가 있는 쪽”으로 “형 변환”이 내부적으로 발생하는 것을 말합니다.

ex) 숫자와 문자열을 비교하는 경우, 숫자가 문자열보다 우선 순위에 있기 때문에 문자열은 정수값으로 자동 형 변환됩니다. 

but) 만약 묵시적 형 변환이 일어나는 곳이 인덱스 칼럼이라면 어떨까요?  인덱스가 있을 지라도 조건 절을 처리하기 위해 모든 데이터를 묵시적으로 형 변환합니다. 이 경우 인덱스는 무의미하며 풀 테이블 스캔이 발생합니다.

Oracle 내부적으로는 SELECT 1+TO_NUMBER('1') FROM DUAL 이 실행되었다.

 

 

명시적 형변환

형변환 함수를 직접 사용하여 사용자가 직접 형변환을 하는것을 의미합니다.
오라클에서 자동으로 형변환 해주는데 왜 필요하냐? 라고 생각하신다면, 해당 쿼리를 다른 DBMS에서 사용하거나
혹은 쿼리가 복잡해지면서 에러를 발생시킬수도 있고, 묵시적 형변환을 하면 인덱스를 못탈수도 있기 때문입니다.
그러므로 가급적 묵시적 형변환보단, 명시적 형변환을 사용하는게 바람직합니다.

 

 

대표적인 변환형 함수

TO_CHAR : 숫자나 날짜를 문자열로 변환 

EMP 테이블

sal은 넘버형이고 to_char(sal)은 문자형으로 변환 [넘버형은 오른쪽 정렬,     문자형은 왼쪽 정렬]

종류 설명 예제 결과값
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(1234,'99,999') 12,345

 

 

 

TO_NUMBER : 문자를 숫자로 변환 

to_number('100')은 넘버형이고 '100'은 문자형 [넘버형은 오른쪽 정렬,     문자형은 왼쪽 정렬]

 

 

 


TO_DATE : 문자를 날짜로 변환

to_date함수를 통해서 문자를 날짜형으로 변환 할 수 있다.

 

 

'IT' 카테고리의 다른 글

[SQL] Union과 Union all 차이  (0) 2022.07.01
ANSI 표준  (0) 2022.06.30
DBMS(DataBase Management System)란?  (0) 2022.06.28
SQL(Structured Query Language)이란?  (0) 2022.06.28
32bit와 64bit의 차이?  (0) 2020.06.16