-
Ich nehme an, dass das Feld in der Datei so bleiben soll wie es ist und nur bei der Auswertung eine Umwandlung in numerisch erfolgen soll.
Dies geht leider nicht mit Query sondern nur mit SQL (probier mal den Query-Manager STRQM).
SQL erlaubt das sog. "casten" von Variablen.
Dazu gibt man nur den gewünschten Typ und in Klammern den Quelltyp, bei numerischen Feldern ggf. noch Länge und Nachkomma an.
Z.B.:
char(>NumField< ) as MyChar -- Umwandlung numerisch nach Alpha, der numerische Wert wird allerdings linksbündig ausgerichtet
dec(>CharField<, 11, 0) as MyDec -- Umwandlung Zeichen in Numerisch mit 11 Stellen und 0 Nachkomma, aber Achtung: das Zeichenfeld darf nur Ziffern enthalten, ggf. führende Leerzeichen, 1 führendes Vorzeichen (+/-) und ein Dezimalzeichen (Punkt, Komma) dass durch die aktuellen SQL-Einstellungen festgelegt ist. Tausendertrennung ist schon nicht mehr erlaubt. Ansonsten werden ungültige Daten geliefert, bzw. der SQL bricht bei diesem Satz ab.
Wenn das Zeichenfeld aber immer einen fest formatierten Dezimalwert enthält, hilft die Funktion "substr" und "concat":
dec(substr(charfld, 2, 5) concat substr(charfld, 9, 2), 11, 0) as MyDec
Es führen viele Wege zur Typumwandlung !
Leider ist ein Prüfen auf korrekten Feldinhalt etwas schwierig:
case
when length(trim(charfld))=0 then dec(0, 11, 0)
when translate(upper(charfld), "ZYXW...CBA", "ABC...WXYZ) <> charfld then dec(0, 11, 0)
else dec(charfld, 11, 0)
end as MyDec
Erklärung:
trim() entfernt Leerzeichen am Anfang und Ende
Length() gibt die Länge des Feldes zurück
=> 1. Fall (case) also: Feld ist leer
upper() wandelt Kleinbuchstabein in Großbuchstaben
Translate() ersetzt jedes Zeichen des 3. Arguments duch das entsprechende Zeichen des 2. Argumentes der entsprechenden relativcen Position des 3. Argumentes.
Wenn kein Zeichen zum Ersetzen vorhanden, bleibt das Zeichen unverändert.
Das Argument 2 und 3 ersetzt also jedes Alphazeichen durch ein beliebiges anderes Alphazeichen. Sind also Alphazeichen vorhanden ändert sich der Feldinhalt.
=> 2. Fall (case) also: Feld ist wahrscheinlich nicht numerisch
=> 3. Fall (else) Typumwandlung scheint möglich
Viel Spaß beim Probieren !
Similar Threads
-
By I0N in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 09-01-09, 17:38
-
By dino in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 30-11-06, 15:23
-
By KM in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 08-06-06, 09:09
-
By jogisarge in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 10-05-06, 16:26
-
By Mark_S in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 20-08-04, 11:53
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