오늘 postgresql 에서 where 조건에 비교문을 작성하였다. 파이썬에서 None 에 대해 비교하듯이 Null 과 비교하자 같은 결과가 나오지 않는 것을 발견했다.
파이썬에서
None != 8 이라고 하면 True 가 된다.
javascript 에서도 유사하게
null != 8 과 undefined != 8 모두 true 가 된다.
그런데 Postgresql 에서
select null != 8; 은 null 이 된다. where 절에서 특정 row의 column 이 null 인 상태에서 이런 비교 연산이 내부적으로 동작한다면 Python 과 JS 에서 사용하는 의도와 null 이 포함된 row 가 나오지 않게 된다.
이를 방지하기 위해 IS DISTINCT FROM 로 비교할 수 있다.
select null is distinct from 8 처럼 사용하면 true 라는 결과를 얻을 수 있다.
유사하게
Postgresql 에서는
select null=8 에 대해서 null 이라는 결과를 리턴하는데
select null is not distinct from 8 라고 사용하면 false 라는 결과를 얻을 수 있다.
postgresql 에서 IS DISTINCT FROM 비교문
2022. 10. 5. 21:34