[펌글] 오라클에서 빈문자 인식 문제 ( '' 를 NULL 로 인식)

By | 10월 22, 2009

[출처] 오라클에서는 ''(공백이 들어간 ' '이 아닌)을 null로 인식 한다.|작성자 까만머루

자바와 같은 프로그램언어와는 다르게
오라클은 빈문자열을 인정하지 않고 null 로 인식합니다.
그러나 '' 사이에 공백이 한 칸 있다면,즉 ' ' 이라면 이것은 길이가 1인 문자열로 인식합니다.

이러한 이유로 프로그램과 데이타베이스 사이에 혼란이 일어나는 경우가 있습니다.
즉 자바로 짠 프로그램에서는 입력시 분명 빈문자열을 입력했는데 칼럼에는 null로 셋팅되는 문제가 생깁니다.

(예) SELECT 1 FROM DUAL WHERE '' IS NULL         =>     조건절 TRUE

* 오라클에서 문자열 내용이 존재할 경우에 대한 조건문 예시
   (정석인지 아닌지는 모르지만 잘 작동하는 듯 하다~)

   IF ( TRIM(변수) ) IS NULL THEN

   END IF;

 

=============== 이하 MS-SQL=>Oralce 컨버팅 중 본인의 황당한 경험 =============

아래의 쿼리가 어떤 결과를 출력할까?

SELECT CASE
         WHEN 'A' NOT IN ('@', '%', '', '9999') THEN
          'A'
         ELSE
          'B'
       END AS RET
  FROM dual;

A를 출력할 것 같지만 결과는 B 였다. 

정확한 이유는 모르겠으나 NOT IN 구문 내에서 '' 이 들어가 있어서 원치 않는 결과를 냈던 것 같다.

(''는 NULL 리터럴이므로 단순비교할 수 없는 듯 하다.)

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments