명시적(Explicit) 형변환과 암시적(Implicit) 형변환

심주흔·2023년 5월 15일
0
post-thumbnail

형변환?
두 개의 데이터의 데이터 타입(형)이 일치하도록 변환한느 것

숫자와 문자열의 비교, 문자열과 날짜형의ㅣ 비교와 같이 데이터 타입이 불일치할 때 발생

명시적(Explicit) 형변환

: 형변환 함수를 사용해서 데이터 타입을 일치시키는 것으로 개발자가 SQL을 사용할 때 형변환 함수를 사용해야 한다.

형변환 함수

TO_NUMBER(문자열) : 문자열을 숫자로 변환한다.

TO_CHAR(숫자 혹은 날짜,[FORMAT] : 숫자 혹은 날짜를 지정된 FORMAT의 문자로 변환한다.

TO_DATE(문자열, FORMAT) : 문자열을 지정된 FORMAT의 날짜형으로 변환한다.

암시적(Implicit) 형변환

: 개발자가 형변환을 하지 않은 경우 데이터베이스 관리 시스템이 자동으로 형변환 하는 것을 의미한다.

🤓 인덱스 칼럼에 형변환을 수행하면 인덱스를 사용하지 못한다?

  • 인덱스는 데이터를 빠르게 조회하기 위해서 인덱스 키를 기준으로 정렬해 놓은 데이터이다. 그런데 인덱스는 기본적으로 변형이라는 것이 발생하면 인덱스를 사용할 수 없다(예외도 있음.) 따라서 인덱스가 있어도 인덱스 칼럼에 형변환이 발생하면 인덱스를 사용할 수 없다.
SELECT * FROM EMP
WHERE EMPNO = '100'

일 때 EMP테이블을 생성할 때 숫자형 데이터 타입으로 생성했다. 하지만 '100'은 문자열 자료형이므로 암시적 형변환(TO_CHAR(EMPNO)이 발생한다. EMPNO 칼럼은 숫자형 타입이고 기본키이므로 자동으로 인덱스가 있다. > 오류 발생

이 오류를 해결하기 이ㅜ해서는 명시적 형변환을 해주어야 한다.

WHERE EMPNO = TO_NUMBER('100')

으로 하면 EMPNO칼럼이 변환되지 않아서 인덱스를 사용할 수 있다.

profile
이봐... 해보기는 했어?

0개의 댓글