Divison durch 0 in TSQL abfangen

02/09/2009 - 15:14 von Bernd Maierhofer | Report spam
Ich habe dynamisch erzeugte SQL Statements, die eine Division enthalten
können.

Beispiel:
select a,b,c,a/b,c+d from table

Ich suche nach einer eleganten Möglichkeit, die drohenden Divisionen durch
Null abzufangen, ohne den Rest der Daten zu verlieren.

Meine Ideen bisher:
- statt / eine UDF Division(a,b), die auf 0 prüft und dann -1 zurückliefert,
also select a,b,c,division(a,b),
- zu allen Werten 0.00001 addieren, wenn dividiert wird, das ist aufgrund
der Wertebereiche kein Problem, also
select a,b,(a+0.00001)/(b+0.00001),

Gibt es Klügeres?

tx Bernd
 

Lesen sie die antworten

#1 Jürgen Volke
02/09/2009 - 15:36 | Warnen spam
Hallo Bernd

Ich habe dynamisch erzeugte SQL Statements, die eine Division enthalten
können.

Beispiel:
select a,b,c,a/b,c+d from table

Ich suche nach einer eleganten Möglichkeit, die drohenden Divisionen
durch Null abzufangen, ohne den Rest der Daten zu verlieren.

Meine Ideen bisher:
- statt / eine UDF Division(a,b), die auf 0 prüft und dann -1
zurückliefert, also select a,b,c,division(a,b),
- zu allen Werten 0.00001 addieren, wenn dividiert wird, das ist aufgrund
der Wertebereiche kein Problem, also
select a,b,(a+0.00001)/(b+0.00001),

Gibt es Klügeres?



vielleicht

SELECT .., case when b <> 0 then a/b Else 0 END, ...

Gruß Jürgen

Ähnliche fragen