-
numerisches Feld erstellen
Hallo alle zusammen,
nachdem es bei der ersten Frage ja so perfekt geklappt hat(nochmals Danke) werde ich dies Forum ein wenig "ausnutzen" Keine Sorge, wenn ich helfen kann, werde ich dies auch machen. Nun die (einfache) Frage: wie kann ich aus einem normalen alphanumerischen Feld ein numerisches mit 0 Nachkommastellen machen ?? Evtl ein Ergebnisfeld in Query ??
Besten Dank im voraus
Michael
-
Meinst du im Displayfile, oder im PF?
[Dieser Beitrag wurde von Steven am 04. Dezember 2002 editiert.]
-
Oups, ganz vergessen. Ich meine natürlich eine PF Datei.
Sorry
-
Schreib bei der Längenangabe einfach die Länge, dann 2 Leerschritte und dann 0. Dann hast du nummerisch mit 0 nachkommastellen. Die 0 gibt die Kommastellen an.
-
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