Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

Table of Contents
maxLevel3

...

자동 형 변환 과정에서 변환하려는 데이터 타입으로 변환할 수 없는 값을 가질 때 발생할 수도 있습니다.

 

 

 

사례 1. UNION, UNION ALL 사용 시 맵핑이 되는 컬럼에 대해 데이터 타입이 다를 때.

...

Code Block
languagesql
iSQL> CREATE TABLE T (NO CHAR(1));
Create success.
iSQL> INSERT INTO T VALUES('1');
1 row inserted.
iSQL> INSERT INTO T VALUES('2');
1 row inserted.
iSQL> SELECT * FROM T WHERE NO = 1;         -- CHAR형 컬럼의 값을 숫자형 데이터와 비교함. NO 컬럼의 값이 숫자형으로 자동 형 변환이 이루어짐. 
NO                                          -- NO 컬럼에 숫자형으로 변환 가능한 값만 존재하기 때문에 에러없이 수행됨.
------
1                                           
1 row selected.

iSQL> INSERT INTO T VALUES('A');            -- NO 컬럼에 숫자형으로 변환할 수 없는 값이 입력.
1 row inserted.
iSQL> SELECT * FROM T WHERE NO = 1;         -- NO 컬럼의 값을 숫자형으로 자동 형 변환이 이루어지면서 'A' 라는 값 때문에 Invalid literal 에러가 발생함. 
[ERR-21011 : Invalid literal]

iSQL> SELECT * FROM T WHERE NO = '1';       -- 문자형 컬럼에는 비교 값에 작은 따옴표(') 를 사용해야함. 
NO                                          
------
1                                           
1 row selected.



iSQL> INSERT INTO T VALUES(' ');            -- NO 컬럼에 공백 문자로 포함된 경우도 Invalid literal 에러가 발생함.
1 row inserted.
iSQL> SELECT TO_NUMBER(NO) FROM T;          
[ERR-21011 : Invalid literal]

iSQL> SELECT TO_NUMBER(TRIM(NO)) FROM T;    -- 공백 문자의 경우 TRIM 함수를 이용하면 에러를 없앨 수 있음. 
TO_NUMBER(TRIM(CODE)) 
------------------------
1           
2           
                       
3 rows selected.
iSQL>