[SQLD/P] 묵시적(암시적) 형변환

Hyo Kyun Lee·2022년 12월 2일
0

SQLD/P

목록 보기
51/82

1. 개념

보통 data를 insert 및 update하는 상황에서, 기본적으로는 각 속성의 data type에 맞게 입력해주는 것이 필요하다.

따라서 data type이 맞지 않다면, TO_NUMBER나 TO_CHAR 등 명시적 형변환을 통해 정확한 data를 입력해주어야 한다.

하지만 RDBMS에서 서로 data type이 맞지 않더라도, 자동으로 형변환을 해서 data를 입력해주기도 하는데, 이를 묵시적 형변환이라 한다.

2. 예시

Oracle RDBMS에서 DATE, EMPL_NO 속성의 data type이 각각 DATE, VARCHAR2(100)으로 정해져있는 상태에서 data를 INSERT 한다고 한다.

  • 명시적 형변환은 말 그대로 문장에서 형변환을 직접적으로 표기해준다.
INSERT INTO TABLE(DATE, EMPL_NO)
VALUES (TO_DATE('20221202', 'YYYY/MM/DD'), TO_CHAR(100));
  • 묵시적 형변환은 명시적 형변환을 하지 않아도, RDBMS에서 처리할 수 있을 type이 입력된다면 자동으로 data type을 변환하여 입력한다.
INSERT INTO TABLE(DATE, EMPL_NO)
VALUES ('2022-10-24', 100);

※ 위 SQL 문장에서 DATE의 경우 문자열 형식으로 입력되었으나, 형태가 YYYY-MM-DD로 자동 형변환 되었다. 마찬가지로 EMPL_NO 역시 NUMBER 형식으로 입력되었으나, 형태가 문자열로 자동 형변환 되었다.

3. 유의사항

이처럼 형변환이 이루어질 수 있는 형태의 data가 입력된다면, RDBMS측에서 자동으로 data type을 변환하여 입력해준다.

  • VARCHAR2 → 숫자 (가능)
  • VARCHAR2 → DATE (가능)
  • NUMBER → VARCHAR2 (가능)
  • DATE → VARCHAR2 (가능)

참고로 조회(SELECT)시, "웬만해서는" 조건절에서는 명확한 형태를 입력해주어야 한다(수치가 부적합하다는 오류 발생).

SELECT EMPL_NAME FROM TABLE
WHERE EMPL_NAME = 2 (수치가 부적합합니다 오류 발생)

해당 속성은 문자열 형태이지만, <모든> 데이터가 '001' '002'와 같이 일괄적으로 입력되어야 자동 형변환이 가능해진다.

4. 참고자료

자동 형변환 유형 - https://sorrow16.tistory.com/153
DATE type의 자동 형변환 - https://thebook.io/080202/ch06/02/04-04/

0개의 댓글