[출처] 오라클에서는 ''(공백이 들어간 ' '이 아닌)을 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 리터럴이므로 단순비교할 수 없는 듯 하다.)