-
Frage zum Cast beim SQL
Hallo *all, ich habe eine Verständnisfrage zum Cast.
Habe folgende Formel hier:
Right('0000000000' concat Varchar(Dec(CSRC1.ums2012, 8, 2)), 10)
Und die Daten die zur Summe führen (Ausschnitt)
PHP-Code:
000014 2013 4350 20.130.112 319680,000 000015 2013 4350 20.130.112 49896,000 000016 000017 SUMME 1336826,520
Wie man sieht habe ich 8 Vorkamma und 2 Nachkommastellen er kommt mir aber mit folgender FEhlermeldung:
PHP-Code:
Nachricht . . . : Datenzuordnungsfehler in Teildatei QSQPTABL. Ursache . . . . : Bei Feld (Cast(ReferenceVar(1), Long Packed(31,3)) AS Short Packed(8,2)) im Satz mit Nummer 0 und Format *FIRST in Teildatei QSQPTABL mit Nummer 1 der Datei QSQPTABL in Bibliothek QSYS2 ist wegen Fehlercode 2 ein Datenzuordnungsfehler aufgetreten. Fehlercodes und ihre Bedeutung: 1 - Dezimalfeld enthält ungültige Daten. 2 - Signifikante Ziffer wurde abgeschnitten.
Klar ich könnte das Feld größer definieren aber ich würde gerne verstehen wo sein Problem ist.
GG
-
Hallo,
Ich verstehe ehrlich gesagt die Frage nicht. Die Fehlermeldung sagt ja dass das Problem darin liegt ein Long Packed(31,3) Feld auf Dec (8, 2) zu kürzen.
Du würdest dadurch falsche Daten erhalten (wenn du einen Wert hättest der dec (8, 2) übersteigen würde).
lg Andreas
-
Wenn --- Dann.
Er macht es ja bei weit über 1.000 Kunden. Und wie Du siehst passt die Zahl ja.
GG
-
Korrektur:
Wo passiert denn der Fehler eigentlich?
Wenn du z.B. 1336826,520 versuchst auf 8, 2 zu casten wirst du einen fehler bekommen, da du instesammt 9 Stellen hast. Und du dabei aber auf 8 Stellen verringern willst.
Last edited by andreaspr@aon.at; 05-09-13 at 12:52.
Grund: Korrektur
-
Da sich SQL ja um den Inhalt nun mal nicht kümmert, wird durch den Cast eines langen Feldes in ein kurzes Feld eben eine Warnung ausgegeben, die zu Verlust von Daten führen könnte.
Solche Dinge sollte man vermeiden, ins besonders wenn bei u.U. Millionen von Sätzen dadurch das Joblog zugemüllt wird und sogar der Job (wenn Systemwerte entsprechend eingestellt sind) angehalten werden kann.
Im Zweifel wird bei *WRAP auch noch jedesmal ein Joblog ausgegeben.
Da geht dann sogar die Performance in die Knie.
Wenn du sicher bist, dass der Inhalt passt, musst du halt mehrere Schritte verwenden:
dec(dec(substr(digits(MyField), Start, Länge), 10, 0) / 100, 8, 2)
* case when MyField < 0 then -1 else 1 end
Start und Länge hängen dann halt von der Ursprungsgröße ab.
-
Je nach Release steht dir auch die skalare Funktion MOD zur Verfügung:
mod(trunc(myfield, 2), 100000000)
-
 Zitat von andreaspr@aon.at
Korrektur:
Wo passiert denn der Fehler eigentlich?
Wenn du z.B. 1336826,520 versuchst auf 8, 2 zu casten wirst du einen fehler bekommen, da du instesammt 9 Stellen hast. Und du dabei aber auf 8 Stellen verringern willst.
Das war mein Denkfehler, ich bin beim cast davon ausgegangen das er 8 Stellen vor dem Komma und 2 nach dem Komma macht, richtig ist aber das die Gesamte Zahl 8 Stellen hat wovon 2 Nachkommastellen sind.
Das kommt davon wenn man copy paste macht und sich nicht durchliest was cast bedeutet.
Handbücher lesen war früher nicht das schlechteste da wußte man hinterher wovon man spricht.
GG
Similar Threads
-
By Daechsle in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 05-09-13, 10:17
-
By camouflage in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 14-12-12, 10:52
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 24-01-07, 19:17
-
By cbe in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 24-08-06, 17:30
-
By Jenne in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 22-08-05, 11:37
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks