데이터베이스/SQL

[MSSQL] SQL Server에서 SAFE_DIVIDE 사용하기

sseozytank 2024. 6. 10.

Divide by zero error encountered 이 오류는 분모가 0이 들어갈 때 나누기를 시도할 때 발생하는 에러임! 

 

빅쿼리 같은 경우 SAFE_DIVIDE라는 함수가 있어서 아주 편하게 사용할 수 있는데 ... 😥

SELECT IFNULL(SAFE_DIVIDE(a,b),0) AS safe_example
FROM sample_table

 

MsSQL에서 사용할려하니 당연히 없는 함수라 뜬다. 그럼 어떻게 사용하면 될까 ?

 

1.case when 으로 0일 때 null 처리 해주기. 

SELECT  CASE WHEN b=0 THEN null
		     ELSE a / b
             END AS sample
 FROM sample_table

 

분모가 0이 될 때, case when으로 null로 바꿔주면 계산 값이  null로 뜨며 제대로 작동한다. 

 

2.NULL IF 로 b가 0일 때 null 처리 해주기

 Select a / NULLIF(b, 0) AS sample
   FROM sample_table

 

CASE WHEN을 사용하면 쿼리가 불필요하게 길어지므로 2번을 추천함! 

b가 0일 때 NULLIF 함수로 NULL처리를 해주면 간단하게 위에서 주저리 설명한 CASE WHEN 절을 함수 하나로 대치할 수 있다. 

 

 

*ISNULL vs NULLIF 

  • ISNULL은 NULL 값에 대한 대체 값 지정 
  • NULLIF는 두 값이 같을 때 NULL을 반환

 

 

끝! 이야호 엄청 쉽구욘  

 

 

 

 

레퍼런스 

https://stackoverflow.com/questions/861778/how-to-avoid-the-divide-by-zero-error-in-sql

댓글