본문 바로가기
IT_Developers/MSSQL

MSSQL - 0으로 나누기 오류 방지하기

by 고코더 2017. 11. 6.


MSSQL 0을 Null로 반환하여 isnull로 처리하기


MSSQL 에서 0으로 나눌시에는 오류가 발생한다. 0으로 숫자를 나눈건 로직이 잘못됐거나 모델링 잘못된 것이다.
하지만 .. 사람 맘 같이 세상이 움직이겠는가..
결국은 숫자가 꼬이고 꼬이면 0으로 나누고 결국 오류가 발생할것이다.
오늘은 그래서 MSSQL에서 0으로 나누기 오류를 대비하는 법을 배워보겠다.

우선 아래처럼 쿼리를 MSSQL매니저먼트에서 실행해보자
 SELECT 1000 / 0   



▼ 당연히 오류가 발생하였다. 수학에선 0으로 숫자를 나눌수 없다. 



이번엔 이 쿼리를 실행해보자
SET ANSI_WARNINGS OFF
SET ARITHIGNORE ON
SET ARITHABORT OFF
select 100 / 0

▼ 아래처럼 NULL 이 반환 됐다. (오류만 발생안했을 뿐이지 결국 오류이지만)



해당 옵션과 함께 isnull을 사용하면
SET ANSI_WARNINGS OFF
SET ARITHIGNORE ON
SET ARITHABORT OFF
select ISNULL(100 / 0,0)

▼ 가장 올바른 값이 표출 되었다. 
오류를 피해갈 수 있었다가 맞겠네요






+고코더의 추천강의


프로시저에서 오류를 캐치하기 RAISERROR 예제를 배워보세요

-> http://gocoder.tistory.com/34?category=701232



마무리


0으로 숫자를 나누지 않게 프로시져를 개발 하는게 정답입니다.


댓글