by Eren
13. January 2009 14:56
Sql de 0/0 yada x/0 gibi hesaplamalar sorgumuzun hata fırlatmasına sebebiyet vermektedir. Bunu bölen kısmın 0 olup olmama durumunu CASE WHEN yapısıyla yada en kötü ihtimal IF THEN bloğuyla tespit edip önlememiz muhtemeldir.
Ama ben size bunun daha basit ve daha performanslı bir yöntemini söyleyeyim;
Select
isnull(bolunen/nullif(bolen,0),0) From tablom
nullif fonksiyonu parametre olarak aldığı iki parametre eşit değerde olduğu taktirde null geri döndürür. Eşit olmama değerinde ise birinci parametreyi geri döndürür. Yukarıda yer alan ifadede ise bolen kolonu 0 a eşit ise fonksiyon null döndürecektir.Bu null değeride en baştaki isnull ifadesiyle 0 olarak geri dönecektir.
NullIf işe yarayan bir fonksiyona benziyor. Aklınızda bulunsun.
1c3c60bb-c0ce-4e7a-a861-c3a371c79f7e|0|.0
Tags: