Sql de 0/0 yada x/0 gibi hesaplamalar sorgumuzun hata vermesine sebebiyet vermektedir. Hatayı engellemek için bölen kısmın 0 olup olmadığını CASE WHEN yapısıyla yada IF THEN sorgusuylatespit edip önleyebilirsiniz.
Ancak bunun yerine daha kullanışlı bir yöntem bulunmakta;
SELECT CAST(isnull(BOLUNEN/nullif(BOLEN,0),0)as DECIMAL(38,2))as SONUC FROM TABLO
nullif fonksiyonu parametre olarak aldığı iki parametrenin eşit olması durumunda NULL geri döndürür. Eşit olmama durumunda ise birinci parametreyi geri döndürür.
Yukarıda yer alan ifadede ise BOLEN alanı 0 a eşit ise fonksiyon null değer döndürecektir.Bu null değeride en baştaki ISNULL ifadesiyle 0 olarak geri dönecektir.
NullIf Matematiksel işlemlerde sıklıkla kullanılabilecek bir fonksiyon olduğundan, elinizin altında bulunması iyi olacaktır.
0 yorum:
Yorum Gönder