

안녕하세요, 에이플랫폼의 Support Bulletin 시리즈입니다.
매번 여우 이모티콘으로 인사드리다가, 이번에는 새로운 이모티콘과 함께 인사를 드리게 되어 기쁩니다.😁
앞으로도 즐겁게 소식을 전해드릴 수 있도록 하겠습니다!
개요
이번에는 0 으로 나누게 되는 상황이 생길때 발생하는 문제와 해결 방안에 대해 소개해 드리려 합니다.
SELECT 1/0;
이 쿼리의 실행 결과가 어떻게 나올지 아시나요?
어떤 DBMS냐에 따라 결과가 달라질 수 있겠지만
SingleStore 에서는 NULL을 반환합니다.

0으로 나눴을 때 NULL이 발생하면 장점도 있고 단점도 있습니다.
NULL 반환의 장점
- 오류(Error)를 발생시키지 않아 쿼리 실행을 중단 하지 않아 전체 작업의 연속성을 유지할 수 있습니다.
- NULL은 '정보 없음'을 나타내므로, 후속 처리에서 이를 적절히 해석할 수 있습니다.
- 특정 상황에서는 NULL을 반환하는 것이 더 유용할 수 있습니다. 예를 들어, 데이터 집계나 보고서 생성 시 오류 대신 NULL을 처리하는 것이 더 쉬울 수 있습니다.
NULL 반환의 단점
- 연산 결과가 NULL 로 변환되면서, 예상치 못한 NULL 값이 데이터에 저장될 수 있습니다.
- NULL 값이 포함되면, 집계 함수(SUM, AVG, COUNT, ...)나 비교연산자 (=, <>,>, ...) 등에서 결과가 달라질 수 있습니다.
- 오류가 발생하면 EXCEPTION 같은 예외 처리가 가능하지만, NULL이 반환되면 이를 감지하기가 어렵습니다.
해결방안
이러한 문제를 피하기 위해서
- 나눗셈 연산을 할때 NVL을 사용하는 방법이 있습니다.
- 숫자열에 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를 생성해 프로시저 내에서 오류/예외 처리를 하는 방법이 있습니다.
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
