인프런 커뮤니티 질문&답변

Tae Young님의 프로필 이미지
Tae Young

작성한 질문수

8시간 완성 SQLD(2과목)

노랭이 9번 문제풀이

2번 select문 질문있습니다

작성

·

26

0

첫번째 col2 + col3은 내부덧셈에 null값이 있어도 결과값이 정수로 나왔는데 왜 컬럼끼리의 덧셈은 null값이있으면 전부 null로 나오는지 궁금합니다.

답변 2

0

땃지님의 프로필 이미지
땃지
지식공유자

Tae Young님 안녕하세요.

 

집계와 연산에 대한 개념을 다르게 가져가서 그런 것으로 생각됩니다.

 

컬럼 간 연산에서 NULL은 0으로 간주되는 것이 아니라 미지수의 개념에 가깝습니다.

예를 들면 x+1 는 어떤 값이 될지 알 수 없기 때문에 NULL 이라고 표시할 수 밖에 없는 것이지요.

 

반면 GROUP BY 하고 집계 할 때는 NULL은 아예 제외하고 집계를 하기 때문에 정수 값이 나올 수 있는 것입니다.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. Tae Young님.

질문하신 내용은 SQL에서의 NULL 처리에 관한 것으로 보입니다. NULL은 데이터베이스에서 “값이 없음”을 의미합니다. 따라서 연산 중에 NULL이 포함되면 일반적으로 결과 또한 NULL이 됩니다. 하지만 특정 데이터베이스 시스템에서는 NULL을 다른 방법으로 처리할 수 있는 기능이 있습니다.

일반적인 SQL에서는 다음과 같은 규칙이 적용됩니다:

  1. 산술 연산에서 NULL을 포함하면 결과는 NULL입니다. 예를 들어, col2 + col3에서 col3이 NULL이면 결과는 NULL입니다.
  2. 내부적으로는 NULL을 0으로 대체하는 함수를 활용하여 다른 결과를 얻기도 합니다. 예컨대 COALESCE(col2, 0) + COALESCE(col3, 0)를 사용하면 NULL 대신 0을 사용하여 결과를 얻을 수 있습니다.

이 규칙에 따라 특정 상황에서는 NULL이 연산을 무효화하는 반면, 어떤 경우에는 예외적인 처리를 할 수 있습니다. SQL 서버나 오라클 등에서 제공하는 다양한 함수를 이용하면 NULL을 원하는 대로 처리할 수 있습니다.

더 자세한 정보가 필요하시다면 다음 링크를 참고하시기 바랍니다:
- SQL에서 NULL 처리에 관한 온라인 검색

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Tae Young님의 프로필 이미지
Tae Young

작성한 질문수

질문하기