PDA

View Full Version : SQL Round bei select *



mk
10-12-12, 14:26
Hallo zusammen,

in einem Programm werden folgende SQL's abgesetzt:

insert into mk/dentestp
SELECT * FROM mk/DEN8089P

Der Dateiaufbau ist bis auf die numerischen Feldlängen identisch.

Beispiel:

Datei dentestp
Feld RT DEC ( 15, 5) NOT NULL WITH DEFAULT


Datei DEN8089P
Feld RT DEC ( 7, 2) NOT NULL WITH DEFAULT


Die Daten werden vom obigen SQL kopiert.
Allerdings wird nicht gerundet .

Der Inhalt 7612.04999 ergibt als Ergebnis 7612.04 ( sollte aber 7612.05 sein )

:confused:Gibt es eine globale Einstellung zum runden von numerischen Feldern ?

andreaspr@aon.at
10-12-12, 15:02
Ich hätte jetzt behauptet, dass folgender Befehl dafür zuständig wäre:
Set CURRENT DECFLOAT ROUNDING MODE = {MODE}

Wenn ich jedoch folgenden Select absetze, bekomme ich auch immer 1,4 als Ergebnis.

select dec (dec (1,4999 , 10, 5), 10, 1)
from sysibm/sysdummy1

Fuerchau
10-12-12, 15:43
In SQL gibts die Funktion "ROUND(Ausdruck, Anzahl)".
Allerdings klappts da nicht mehr mit dem Select * from da die Funktion auf jedem Feld individuell angewendet werden muss.
DEC(...) ist nur ein Cast und schneidet Nachkomma ab, bei zuviel Vorkomma gibts einen SQL-Fehler.

mk
10-12-12, 15:47
Hallo,

vielen Dank.
Dann muss ich mal prüfen was wir da mchen.

Gruß
Michael ;)