divisor ist gleich null
habe ich folgende Daten, aber in der Abfrage hab ich die null-problem bei der division durch null. also ich möchte die Ausgabe wie unten angegeben in zwei Formen.
drop table t;
create table t (id number(9), val1 number(9), val2 number(9));
insert into t values (1,23,2);
insert into t values (2,0,4);
insert into t values (3,7,4);
insert into t values (4,0,3);
insert into t values (5,4,6);
select sqrt(Wert2*Wert1)/Wert1 von t ;
SQL> /
FEHLER:
ORA-01476: divisor ist gleich null
erwartet reults
in zwei Formen
erste Abfrage
wie diese
ID SQRT(VAL2*VAL1)/VAL1
---------- --------------------
1 .294883912
2 0
3 .755928946
4 0
5 1.22474487
zweite Abfrage
wie diese
ID SQRT(VAL2*VAL1)/VAL1
---------- --------------------
1 .294883912
3 .755928946
5 1.22474487
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
select sqrt(val2*val1)/val1 from t where val1 != 0
;Vermieden werden die Zeilen, bei denen Wert1 ist 0 und damit wird nicht dazu führen, die "Division durch 0" Fehler. Dies sollte Ihnen die zweite Form.
Für das erste format, wo Sie wollen, um zu zeigen, die 0 in der Ausgabe können Sie eine case-Anweisung in der where-Klausel.
Überlegen, ein DECODIEREN und NVL. In DECODE (if/then/else) geben Sie die Logik mit oder ohne null. Wenn Sie möchten, verwenden Sie einen anderen Wert verwenden Sie stattdessen NVL.
Dekodieren Beispiel:
Hoffe, das hilft.
In Ihre Daten einfügen
into t values (2,0,4);
val1 0 ist, so wird es nicht erlauben, diese zu Teilen mit 0. also entweder müssen Sie zuerst überprüfen, Wetter val1 0 ist oder nicht, dann führen Sie diesen.