![]() |
Integer Overflow bei Multiplikation im SELECT (Interbase)
Hallo,
ich stehe vor einem noch nie dagewesenem Problem. Wenn ich folgendes SQL auf die Datenbank loslasse funktioniert alles einwandfrei:
Code:
Wenn ich hingegen folgendes SQL auf die Datenbank loslasse kommt es zum Fehler:
SELECT Sum(tabelle.wert*0.0833) AS JAN FROM tabelle
Code:
Der Unterschied zum obigen SQL ist die Anzahl der Kommastellen.
SELECT Sum(tabelle.wert*0.08333) AS JAN FROM tabelle
Code:
Wert ist vom Type DECIMAL(18,8 )
Integer overflow The result of an integer operation caused the most significant bit of the result to carry on line 1 : SELECT Sum(tabelle.wert*0.08333) AS JAN FROM tabelle
Jetzt könnte man auf die Idee kommen: Nimm doch vier Kommastellen. Leider geht das nicht, da die Multiplikatoren normalerweise aus einer anderen Tabelle kommen. Auf diese Tabelle habe ich keinen Einfluß. Weiss jemand hier Rat? |
Re: Integer Overflow bei Multiplikation im SELECT (Interbase
Wenn ich den wert caste funktioniert es.
Code:
funktioniert.
SELECT Sum(CAST(tabelle.wert AS DECIMAL(18,0)*0.08333333) AS JAN FROM tabelle
:gruebel: :gruebel: :gruebel: |
Re: Integer Overflow bei Multiplikation im SELECT (Interbase
Es stellt sich die Frage, wie Interbase auf die dumme Idee kommt, hier
eine Integer-Operation zu verwenden. Versuch mal beide Faktoren explizit in den Datentyp Double zu casten.
SQL-Code:
Möglicherweise muss nur der linke Faktor gecastet werden.
SELECT Sum(Cast(tabelle.wert AS Double)*Cast(0.08333 AS Double)) AS JAN FROM tabelle
Viel Glück :thuimb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz