Beim Debuggen von SQL-Code im Finanzbereich wurde ein seltsames Problem mit der mathematischen Genauigkeit von numeric(24,8) festgestellt.
Wenn Sie die folgende Abfrage auf Ihrem MSSQL ausführen, erhalten Sie das Ergebnis des Ausdrucks A + B * C in Höhe von 0,123457
WÄHLE A, B, C, A + B * C FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A, CAST(0 ALS NUMERIC(24,8)) AS B, CAST(500 ALS NUMERISCH(24,8)) ALS C ) T
Wir haben also 2 wichtige Symbole verloren. Beim Versuch, dies auf verschiedene Weise zu beheben, kam ich zu dem Schluss, dass die Umwandlung des Zwischenergebnisses der Multiplikation (das Null ist!) in numerisch (24,8) gut funktionieren würde.
Und endlich haben wir eine Lösung. Aber immer noch ich hace eine Frage - warum MSSQL verhält sich auf diese Weise und welche Art Konvertierungen tatsächlich in meinem Beispiel aufgetreten?