소소한 일상에서 책읽기 중

NUMBER 타입의 컬럼과 형변환 본문

DB까다롭다

NUMBER 타입의 컬럼과 형변환

다솜여우 2012. 6. 19. 11:31

이번 테스트를 통해서 number 타입 컬럼에 varchar 타입의 숫자값이 들어오면 number로 형변환된다는 사실을 알았다...

이제서야 알다니 부끄럽네...

 

====================================================

NUMBER 타입의 컬럼과 데이터

1. 테스트 테이블 생성
CREATE TABLE TED.COL_TYPE_TEST
(COL1 NUMBER, COL2 VARCHAR2(10), COL3 CHAR(10),COL4 NUMBER(10));

2. 테스트 데이터 넣기
  1) 모두 문자 타입으로 데이터 넣기
      INSERT INTO TED.COL_TYPE_TEST VALUES('111','222','333','444');

  2) NUMBER 컬럼의 문자 데이터 넣기 : ERROR 발생 (ORA-01722: 수치가 부적합합니다)
      INSERT INTO TED.COL_TYPE_TEST VALUES('12A','12B','13C','000');

  3) 컬럼 타입에 맞는 데이터 넣기 : 단 NUMBER 타입의 경우 0 으로 시작하지 않은 데이터 넣기
      INSERT INTO TED.COL_TYPE_TEST VALUES(555,'222','333',666);

  4) 모두 NUMBER 타입의 데이터 넣기 : 단 0 으로 시작하지 않은 데이터 넣기
      INSERT INTO TED.COL_TYPE_TEST VALUES(777,888,999,000);

  5) NUMBER 타입 컬럼에 문자 '000' 데이터 넣기 : SELECT 하면 해당 컬럼에 값은 "0"으로만 조회됨. 즉 문자 '000'은 숫자 타입으로 형변환되어서 들어감
      INSERT INTO TED.COL_TYPE_TEST VALUES('123','456','789','000');

  6) VARCHAR2 타입 컬럼에 문자 '000' 데이터 넣기 : SELECT 하면 해당 컬럼에 값은 "000"으로만 조회됨. 즉 문자 '000'은 문자타입으로 데이터가 들어왔으므로 문자로 인식해서 들어감
      INSERT INTO TED.COL_TYPE_TEST VALUES('987','000','654','321');

  7) VARCHAR2 타입 컬럼에 숫자 000 데이터 넣기 : SELECT 하면 해당 컬럼에 값은 "0"으로만 조회됨. 즉 숫자 000은 VARCHAR2 컬럼에 INSERT 될 때 숫자 타입으로 형변환되어서 들어감
      INSERT INTO TED.COL_TYPE_TEST VALUES('234',000,'567','654');

  8) CHAR 타입 컬럼에 숫자 000를 NUMBER 타입의 컬럼에 0으로 시작하는 데이터 넣기 : SELECT 하면 해당 컬럼에 값은 "0"으로만 조회됨.
                                                                              즉 000은 숫자타입으로 데이터가 들어왔으므로 숫자로 형변환되어서 들어감
                                                                                 098은 문자타입으로 들어왔으나 컬럼이 숫자타입이라서 숫자타입으로 형변환됨
      INSERT INTO TED.COL_TYPE_TEST VALUES('345','678',000,'098');

  9) CHAR 타입 컬럼에 문자 000를 NUMBER 타입의 컬럼에 0으로 시작하는 데이터 넣기 : 000은 문자타입으로 데이터가 들어왔으므로 문자로 인식해서 들어가고,
                                                                                   008은 문자타입으로 들어왔으나 컬럼이 숫자타입이라서 숫자타입으로 형변환됨
      INSERT INTO TED.COL_TYPE_TEST VALUES('245','753','000','008');

  10) NUMBER 타입 컬럼에 문자 '000' 데이터 넣기 : SELECT 하면 해당 컬럼에 값은 "0"으로만 조회됨. 즉 문자 '000'은 숫자 타입으로 형변환되어서 들어감
      INSERT INTO TED.COL_TYPE_TEST VALUES('000','045','068','824');

  11) NUMBER 타입 컬럼에 숫자 000 데이터 넣기 : SELECT 하면 해당 컬럼에 값은 "0"으로만 조회됨. 즉 숫자 000은 숫자 타입이므로 숫자로 들어감
      INSERT INTO TED.COL_TYPE_TEST VALUES(000,'003','091','193');

      COMMIT;

3. 데이터 조회
    SELECT * FROM TED.COL_TYPE_TEST;