Tech Tipp #13: Rechnen mit InterBase

by May 28, 2018

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