4 Şubat 2015 Çarşamba

Sql 0 Bolunme Probleminin Çözümü

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.


Share: