본문 바로가기
SingleStoreDB/Support Bulletin

[Support Bulletin 06] - Division by Zero

by 에이플랫폼 [Team SingleStore Korea] 2025. 3. 7.

안녕하세요, 에이플랫폼의 Support Bulletin 시리즈입니다.

매번 여우 이모티콘으로 인사드리다가, 이번에는 새로운 이모티콘과 함께 인사를 드리게 되어 기쁩니다.😁

앞으로도 즐겁게 소식을 전해드릴 수 있도록 하겠습니다!

 

개요

이번에는 0 으로 나누게 되는 상황이 생길때 발생하는 문제와 해결 방안에 대해 소개해 드리려 합니다.

SELECT 1/0;
 

이 쿼리의 실행 결과가 어떻게 나올지 아시나요?

 

어떤 DBMS냐에 따라 결과가 달라질 수 있겠지만

SingleStore 에서는 NULL을 반환합니다.

 

0으로 나눴을 때 NULL이 발생하면 장점도 있고 단점도 있습니다.

 

NULL 반환의 장점

  1. 오류(Error)를 발생시키지 않아 쿼리 실행을 중단 하지 않아 전체 작업의 연속성을 유지할 수 있습니다.
  2. NULL은 '정보 없음'을 나타내므로, 후속 처리에서 이를 적절히 해석할 수 있습니다.
  3. 특정 상황에서는 NULL을 반환하는 것이 더 유용할 수 있습니다. 예를 들어, 데이터 집계나 보고서 생성 시 오류 대신 NULL을 처리하는 것이 더 쉬울 수 있습니다.

NULL 반환의 단점

  1. 연산 결과가 NULL 로 변환되면서, 예상치 못한 NULL 값이 데이터에 저장될 수 있습니다.
  2. NULL 값이 포함되면, 집계 함수(SUM, AVG, COUNT, ...)나 비교연산자 (=, <>,>, ...) 등에서 결과가 달라질 수 있습니다.
  3. 오류가 발생하면 EXCEPTION 같은 예외 처리가 가능하지만, NULL이 반환되면 이를 감지하기가 어렵습니다.
 

해결방안

이러한 문제를 피하기 위해서

  1. 나눗셈 연산을 할때 NVL을 사용하는 방법이 있습니다.
  2. 숫자열에 NOT NULL 제약 조건을 적용하는 방법.
# 예시 테이블 생성
CREATE TABLE test (
id INT primary key,
a INT NOT NULL,
b INT NOT NULL 
);

# 데이터 삽입
INSERT INTO test values (1,1,1/0);

# 결과 
singlestore> INSERT INTO test values (1,1,1/0);
ERROR 1048 (23000): Leaf Error ({server IP}:{port}): Column 'b' cannot be null
 

위의 예시 처럼 ERROR 가 발생하여 NULL 값을 방지할 수 있습니다.

 

또한 아래의 SingleStore 공식문서에서 처럼 stored procedure를 생성해 프로시저 내에서 오류/예외 처리를 하는 방법이 있습니다.

https://docs.singlestore.com/db/v8.9/reference/sql-reference/procedural-sql-reference/exceptions-and-exception-handling/

 

SingleStore Helios · SingleStore Documentation

SingleStore is a modern relational database for cloud and on-premises that delivers immediate insights for modern applications and analytical systems. Book a demo or trial today!

docs.singlestore.com

 

이번 포스팅에서 Division by Zero에 대해서 알아봤습니다.

SingleStore를 사용하면서 조금이나마 도움이 되었으면 좋겠습니다.

많은 관심 부탁드립니다.

추가로 궁금하신 점 있으시면 댓글 달아주시면 답변 해드리겠습니다.