DB/mysql

[sql] Null의 연산

  • -

Database에서 null은 이리 저리 처리해야하는 상황이 많아서 매우 피곤하다. 이번 포스트에서는 다양한 상황에서 null과의 연산에 대해 살펴보자.

참고로 테스트는 mysql에서 진행하였는데 필자가 아는 한 대부분 DB가 동일하다.

 

null의 연산

 

산술 연산: 언제나 null

select null+1, null-1, null*1, null/1 from dual;

 

문자열 결합 연산: null

select concat(1, null, 2) from dual;

 

비교연산

이 부분이 가장 헷갈리는 부분이다. 비교 연산에서 null은 "무엇이든 될 수 있고 무엇도 될수 없는 값이다." (뭐래니.. unknown이라고도 한다. 즉 fix 할 수 없다는 이야기다.)

아래의 표를 살펴보자.

연산자 true false null null과의 연산 설명
! false true null null은 true일 수도 있고 false일 수도 있어서 !null의 값을 정확히 결정할 수 없다. 따라서 null이다.
true & 1 0 null null이 true이면 1, false이면 0이므로 최종 값도 unknown 즉 null이다.
false & 0 0 0 null이 어떤 값이 되더라도 false & 이기 때문에 결과는 false이다.
null & null 0 null null & false는 확실히 false이지만 나머지는 알 수 없다. 따라서 unknown 즉 null이다.
true or 1 1 1 하나라도 true 이므로 null이 어떻게 평가 되더라도 true이다.
false or 1 0 null null이 false면 0, true 였다면 1 이므로 평가할 수 없다. unknown 즉 null이다.
null or 1 null null true가 하나라도 개입되면 1이지만 나머지는 모두 결과를 알 수 없다. 즉 null이다.

 

'DB > mysql' 카테고리의 다른 글

[mysql]알아두면 유용한 설정  (0) 2023.02.05
[mysql]00월 00일 입력?  (0) 2023.02.05
[mysql 설정] ONLY_FULL_GROUP_BY  (0) 2022.09.13
[sql]grouping 함수 사용법  (0) 2021.04.16
mysql workbench 단축키  (0) 2020.10.14
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.