Frage: Ich mache Berechnungen beim SELECT Statement von InterBase. Zum Beispiel (Standard EMPLOYEE Datenbank; nur als Beispiel)
SELECT TOTAL_VALUE, TOTAL_VALUE*1.19 AS RESULT FROM SALES
Das funktioniert auch so weit, so gut!
Dazu habe ich zwei Fragen
(i) Wie wird die Anzahl der Nachkommastellen festgelegt? Beispiel: Wenn ich (oBdA) ein
SELECT DISTINCT 1/3 AS DRITTEL FROM SALES
ausführe kommt da „0“ raus?
(ii) Früher hat das funktioniert!
Antwort: Das ist erstmal abhängig vom Dialekt (DIALECT) von InterBase und der (internen Darstellung von Dezimalzahlen)
Mit dem heute (üblichen) DIALECT 3 ist die Anzahl der Nachkommastellen die Summe der Nachkommastellen in der Berechnung.
Beispiel
SELECT DISTINCT 1.000/3.0 AS DRITTEL FROM SALES
hat in Summe 3+1=4 Nachkommastellen. Also hat das Ergebnis auch 4 Nachkommastellen:
0,3333
Das sollte man unbedingt bei seinen Berechnungen berücksichtigen
Beim DIALECT 1 war das noch anders.
Siehe auch
http://docwiki.embarcadero.com/InterBase/2017/en/Migrating_Databases_to_Dialect_3
http://docwiki.embarcadero.com/InterBase/2017/en/Fixed-decimal_Data_Types
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition