SSISO Community

시소당

오라클에서 NULL 비교 연산

일반적 진리표
A
B
A AND B
A OR B
NOT A
T
T
T
T
F
T
F
F
T
 
F
T
F
T
T
F
F
F
F
 
 
DB에 있어서 진리표
A
B
A AND B
A OR B
NOT A
U
T
U
T
U
U
F
F
U
 
U
U
U
U
 
T : True, F : False, U : Unknown
 
NULL과
1. 산술 연산을 하면 결과는 NULL
2. 문자연결연산은 무시되고
3. 그룹함수연산에서는 계산대상에서 제외된다
4. 논리연산은 Unknown이다
5. 비교연산에서 부정형으로 비교할때(이게 문제) False의 Not은 True이지만
    Unknown의 Not은 Unknown이지 True가 아니다
    그리고 진리연산의 판정에서 ELSE측은 False 외에도 Unknown도 있다
* DECODE는 NULL에 대해서 같은 값으로 인정을 해주는 사양을 가지고 있다
   DECODE(Col_A, NULL, VALUE1, VALUE2) 에서 Col_A값이 NULL이라면 VALUE1을 리턴하게 됨
예제가 없어서 감이 안잡힐 수도 있지만 예제가 넘 길어서 생략(자세한건 Redbook 참조)
 
ㅤㅊㅜㅍ처 : 엔코아(Redbook)
 
추가
입력할 때는 '' 이나 Null 이나 상관이 없습니다만,
조회시 where 절에 is null 을 쓰는 것과 = '' 과는 다릅니다.
null은 비교할 수 없는 대상이므로, null 인 자료를 조회할 때는 반드시 is null 로 하셔야 합니다.
그리고, 만약 column 에 '3'이 아닌 값을 조회하려 한다면(그리고, 이 컬럼이 not null 이 아니라면)
where column != '3'
or column is null
과 같이 하셔야 합니다. 자주 실수하는 부분이라 조심하세요

2817 view

4.0 stars