티스토리 뷰

오라클에서 null을 만나면 당황스러울 때가 종종있다.

오라클은 빈문자도 null로 인식하기 때문이다. 그래서 pl/sql의 = (부등호)로는 검색이 안되는 상황들이 있다.

아래와 같은 이미지의 데이터가 있을 때를 가정해서 결과를 확인해 본다.

.
.

1. null을 검색하기 (오라클)

오라클에서 null인 값을 조회하고 싶으면 is null 을 사용하면 된다.


select *
from TB_STUDENT
where 이름 is null;

.
.

2. null을 제외하고 검색하기 (오라클)

오라클에서 null인 값을 조회하고 싶으면 is not null 을 사용하면 된다.


select *
from TB_STUDENT
where 이름 is not null;

3. 오라클은 왜 null 검색이 부등호로 되지 않나?

오라클에서 길이가 없는 문자열(aka empty string, white space, blank)은 null 로 취급된다.
즉, 필드에 들어있는 값이나 '' 문자 또는 함수가 반환하는 값이 길이가 없는 문자열이라면 null 로 취급된다는 것이다.

그래서 null 인 값에 + 10을 하면 null 이 나온다는 설명...

오라클 docs 에서 알려주는 null

.

4. 오라클 null을 만나면 빈문자로 출력하기

NVL(expr1, expr2) 함수는 expr1이 null 이 아니면 expr1을 그대로 반환하고, null 이면 expr2을 반환한다.


select "학번", nvl("이름", '') as 이름
from TB_STUDENT;

.

5. nvl / nvl2

nvl은 빈값에 대해서 대응이 되었다면 nvl2은 null의 if에 대해서 대응이 가능하다.


select "학번",
       "이름",
       nvl2("이름", '있음', '!없음!') as 이름유무
from TB_STUDENT;
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함