Friday, February 10, 2012
Retabbed
Login | Register
블로그
  Search
블로그 목록
블로그 아카이브
블로그 검색
DB 쿼리의 계산결과가 에러인 경우.(T-SQL)
Location: Blogs불나방의 소프트 블로그    
Posted by: 불나방 2006-03-08 오후 3:55

select x/(a*b+c-d) from xxxx

이런식의 쿼리를 사용할 경우 0으로 나누는 오류가 발생하여 처리가 되지 못하는 경우가 있다. 일반적으로는 (a*b+c-d) 가 0인지 아닌지를 미리 테스트 하여 처리하는데 수식이 이런식으로 고정된 것이 아니라 임의의 식을 사용해야 하는 경우에는 미리 테스트 하는 것이 불가능하다. 즉,

select eq from xxx

식의 eq이 변수로 주어지는 경우이다. 이럴때는 다음과 같이 한다.

set ansi_warnings off
set arithabort off
select COALESCE(eq, 0) from xxx

ansi_warnings를 끄고 arithabort도 끄게 되면 식의 계산 결과가 오류가 있을 경우 에러 없이 NULL을 반환하게 되므로 COALESCE를 사용하여 NULL일 경우는 0으로 처리해 주면 되는 것이다.(또는 0이 아닌 어떤 원하는 값이든 설정하면 될 것이다.)

Permalink |  Trackback
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게