NULL 비교연산과, 집계연산 0 2 1,859

by inbeater [SQL Query] null null 비교연산자 null 집계연산자 [2019.03.08 10:03:57]


with 실적 as (select 1 번호, 100  기준금액, 200  목표금액 from dual union all

              select 2 번호, 100  기준금액, null 목표금액 from dual union all

              select 3 번호, null 기준금액, 200  목표금액 from dual union all

              select 4 번호, null 기준금액, null 목표금액 from dual )

--select 번호, nvl(기준금액, 0) from 실적 where 기준금액 = 목표금액; --> 출력값 없음

--select 번호 from 실적 where 기준금액 = 목표금액; --> 출력값 없음 

--select 번호 from 실적 where 기준금액 > 목표금액; --> 출력값 없음

--select 번호 from 실적 where 기준금액 < 목표금액; --> 1

--select 번호 from 실적 where 기준금액 <> 목표금액; --> 1

 

위의 쿼리로 비교 연산자에 대한 테스트를 해보았습니다. 

 

어떤 책에서 'null에 대한 비교 연산자 연산시 연산 결과는 null이다' 라는 문구를 보고 테스트 하였으나,

 

테스트 결과 제가 내린 결론은 'null에 대한 비교 연산자 연산시 연산 결과는 연산결과 제외다'

 

즉 연산에 참여 하지도 않고, 결과값도 출력 하지 않는 다는 결론을 내렸습니다.

 

해당 비교연산자(=, >, >=, <, <=, <>, !=)사용 시 입니다.

 

 

집계 연산과의 차이점은, 연산시 null값을 제외하고 나머지 값으로 연산해서 결과값이 나온다 였습니다.

 

제가 테스트하고 내린 결론이 맞는지 의견 부탁드리겠습니다.

 

by 마농 [2019.03.08 10:27:56]

비교연산의 결과는 (참/거짓) 두가지 입니다.
즉, 말씀하신 'null에 대한 비교 연산자 연산시 연산 결과는 연산결과 제외다' 는
'null에 대한 비교 연산자 연산시 연산 결과는 거짓이다' 로 바뀌어야 합니다.
조건이 참이 아닌 거짓이기 때문에 출력 결과에서 제외되는 거지요.
연산결과와 출력결과를 구분지어 생각하셔야 합니다.


by inbeater [2019.03.08 13:46:13]

항상 빠른 답변 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입