형변환?
두 개의 데이터의 데이터 타입(형)이 일치하도록 변환한느 것
숫자와 문자열의 비교, 문자열과 날짜형의ㅣ 비교와 같이 데이터 타입이 불일치할 때 발생
: 형변환 함수를 사용해서 데이터 타입을 일치시키는 것으로 개발자가 SQL을 사용할 때 형변환 함수를 사용해야 한다.
TO_NUMBER(문자열)
: 문자열을 숫자로 변환한다.
TO_CHAR(숫자 혹은 날짜,[FORMAT]
: 숫자 혹은 날짜를 지정된 FORMAT의 문자로 변환한다.
TO_DATE(문자열, FORMAT)
: 문자열을 지정된 FORMAT의 날짜형으로 변환한다.
: 개발자가 형변환을 하지 않은 경우 데이터베이스 관리 시스템이 자동으로 형변환 하는 것을 의미한다.
- 인덱스는 데이터를 빠르게 조회하기 위해서 인덱스 키를 기준으로 정렬해 놓은 데이터이다. 그런데 인덱스는 기본적으로 변형이라는 것이 발생하면 인덱스를 사용할 수 없다(예외도 있음.) 따라서 인덱스가 있어도 인덱스 칼럼에 형변환이 발생하면 인덱스를 사용할 수 없다.
SELECT * FROM EMP
WHERE EMPNO = '100'
일 때 EMP테이블을 생성할 때 숫자형 데이터 타입으로 생성했다. 하지만 '100'은 문자열 자료형이므로 암시적 형변환(TO_CHAR(EMPNO)이 발생한다. EMPNO 칼럼은 숫자형 타입이고 기본키이므로 자동으로 인덱스가 있다. > 오류 발생
이 오류를 해결하기 이ㅜ해서는 명시적 형변환을 해주어야 한다.
WHERE EMPNO = TO_NUMBER('100')
으로 하면 EMPNO칼럼이 변환되지 않아서 인덱스를 사용할 수 있다.