Background Image
조회 수 15340 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. 개요

  CUBRIDOracle  NULL, ‘’(empty string)의 차이점을 확인한다.



2. 테스트 시나리오

  1) 샘플 테이블(test_table)에 char(10), varchar(10)을 생성

  2) 샘플 데이타 테스트, null, ''(empty string)을 입력

  3) select 실행 및 결과 비교



3. 세부 시나리오
1) test_table 생성 ( CUBRID, Oracle 동일 )


 create table test_table ( id varchar(100), col1 char(10), col2 VARCHAR(10) );     



2) 샘플 데이터 입력 ( CUBRID, Oracle 동일 )


insert into  test_table values  ('value', 'cubrid', 'cubrid') ;

insert into  test_table values  ('null', NULL, NULL ) ;

insert into  test_table values  ('empty string', '', '' ) ;



3) select 쿼리 실행 및 비교 ( CUBRID, Oracle 동일 )
- select 쿼리


select id, col1, length(col1) col1_length, nvl(col1, 'null') col1_null_check,

col2, length(col2) col2_length, nvl(col1, 'null') col2_null_check

from       test_table ; 






- CUBRID 실행결과

NO

id

col1

col1_length

col1_null_check

col2

col2_length

col2_null_check

1

Value

cubrid

10

cubrid

cubrid

6

cubrid

2

Null

(NULL)

(NULL)

null

(NULL)

(NULL)

null

3

Empty string

 

10

 

 

0

 

- Oracle 실행결과

NO

id

Col1

Col1_length

Col1_null_check

Col2

Col2_length

Col2_null_check

1

Value

cubrid

10

cubrid

cubrid

6

cubrid

2

Null

(NULL)

(NULL)

null

(NULL)

(NULL)

null

3

Empty string

(NULL)

(NULL)

null

(NULL)

(NULL)

null





3. 테스트 결론

NULL 값과 문자값은 CUBRID, Oracle 모두 동일하게 처리한다.

위 테스트 결과와 같이 id값이 ‘Value’, ‘Null’인 SQL 실행 결과는 동일하다

CUBRID Oracle 모두 char 컬럼 타입과 varchar 컬럼에 데이터를 입력하고 조회 한 결과는 동일 함.  

Char 타입에서 남은 공간은 space(공백)로 채우는 것도 동일

CUBRID Oracle 모두 char 컬럼 타입과 varchar 타입에 Null을 입력하면 동일하게 Null로 처리

 

틀리게 처리하는 내용은 Empty string(‘’)이다.

CUBRID empty string을 ‘’로 처리 함.   Oracle에서는 Empty string(‘’)을 Null로 처리 한다.  

CUBRID에서는 ‘’ char 타입에 입력하면남은 공간을 공백으로 처리하고

Oracle은 ‘’ 값을 입력하면 null로 처리함으로 공백으로 처리하지 않는다.  

Length 함수를 사용하여 길이를 확인 해 보면 

CUBRID에서는 char 컬럼타입은 컬럼 길이만큼 space(공백)으로 체워짐으로 컬럼길이 10이 보여지고

varchar에는 0으로 보여진다.  

그에 반해서 Oracle은 null로 입력 됨으로 length를 체크해도 char, varchar 타입 모두 null로 보여진다.





4. DB 전환 시 유의 사항

위 결과와 같이 컬럼의 값이 NULL 또는 값이 있는 컬럼은 CUBRID와 Oracle이 모두 동일하게 처리함으로 이슈는 없다.


기존 Oracle에서 NULL과 Empty string을 각각 의미 있는 값으로 사용하고 있다면

설계가 잘 못된 것이므로 Empty string을 의미 있는 값으로 처리 될 수 있도록 코드설계를 다시 하는 것이 가장 바람직하다.


그러지 못할 경우에는 아래의 내용을 참고하기 바라며

아래의 해결 방법으로 처리 할 경우에는인덱스를 활용하지 못하여 성능에 큰 영향을 끼칠 수도 있다.


Empty String 데이터 처리의 동일한 결과를 위해서는 입력/수정 처리 또는 조회 처리에서 변경이 필요하다.


Oracle과 동일한 처리를 위해서는

1입력 처리 시에 Empty string Null로 입력되도록 처리

    예시) decode 함수 이용(입력값이 ‘’이면 NULL로 처리)  :  decode(입력값,  ‘’, NULL, 입력값 )

2조회 처리 시에 NULL값 조회(is null, is not null)가 아닌 Empty string값으로 조회처리 되도록 수정

    예시) OR조건으로 NULL과 ‘’값을 함께 조회 : 조회컬럼 is null  OR  조회컬럼 = ‘’ 






  • ?
    엄기호 2016.03.19 00:21

    오라클은 Empty string값 과 NULL값을 동일시 한다.

    - 컬럼의 타입이 date Type이면서 SQL문에 DECODE함수를 사용할 경우

     

    1) 오라클 SQL문

         DECODE( create_dt, '', '', create_dt)

    2) 큐브리드 SQL문(컬럼에 들어 있는 Empty값을 NULL로 작업을 해 놓고 SQL문 변경)

     2.1) CASE WHEN문 사용

            CASE WHEN create_dt IS NULL THEN NULL

                          ELSE create_dt

              END

     2.2) DECODE문 사용

            DECODE(create_dt, NULL,NULL, create_dt)


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
239 질의작성 컬럼 사이즈 변경 방법 정만영 2009.03.14 24329
238 CUBRID 매니저 CUBRID Manager Client 에러(Java관련). file 윤희서 2009.02.06 24150
237 질의작성 데이터 값 작은 따옴표(') 넣기 정만영 2009.03.20 23795
236 운영관리 CUBRID 에서의 사용자 권한관리 방법 file cubebridge 2012.04.14 23640
235 질의작성 쿼리로 테이블이 존재하는지 확인하기 시난 2009.12.28 23519
234 질의작성 pivot() 간략하게 구현하기 남재우 2009.06.24 23418
233 CUBRID 매니저 데이터베이스 자동시작 설정(CUBRID 7.3.0). 윤희서 2009.01.17 23154
232 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23069
231 운영관리 64비트 윈도우환경에서 32비트 ODBC 사용하기 Prototype 2009.12.09 22664
230 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22592
229 질의작성 임의의 컬럼을 rownum 으로 업데이트 하기 Prototype 2009.07.01 22519
228 CUBRID 매니저 큐브리드 매니저 "선택한 JDBC 드라이버는 CUBRID를 지원하지 않습니다." 해결방법 file 정만영 2010.01.29 22506
227 기타 cubrid: error while loading shared libraries 에러가 발생했을 경우 대처 웁쓰 2009.05.19 22434
226 운영관리 HP-ux에서 jvm loading이 실패하는 경우 조치 사항 admin 2008.11.21 22432
225 질의작성 문자 코드셋(UTF-8, EUC-KR) 사용시 CUBRID 는? 남재우 2010.01.01 22387
224 응용개발 CUBRID에서 euc-kr의 한글 데이터를 utf-8의 한글 데이터로 변경 시 주의할 점 cubebridge 2010.04.01 22380
223 질의작성 테이블 데이터 복사 하기 정만영 2009.03.14 22289
222 응용개발 윈도우 환경에서 PHP 모듈 로드를 못 할 경우 해결법 3 Prototype 2009.11.26 22254
221 운영관리 백업파일을 이용하여 데이터베이스가 없는 다른 서버에서 복구하는 방법 admin 2008.11.21 22034
220 마이그레이션 타 DB 에서 마이그레이션시 질의 변경 샘플 - CASE 문 웁쓰 2009.12.31 21921
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales