[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2003
    Beiträge
    17

    Red face konvertierungsproble???

    Hallo allerseits,

    ich habe ein Problem:

    ich möchte auf der AS400 per SQL eine Spalte prüfen, ob sie Zahl enthält, wenn ja dann diese Spalte in eine andere Spalte als Zahl zurückgeben.

    Wie kann ich das machen??

    Hier mein Code:

    Code:
    UPDATE TBL1 SET SP2 = IIF(ISNUMBER(SP1), SP1, 0)
    Ich hoffe ihr könnt mir helfen!

    Danke vorab

    Gruß
    Otto

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo Otto,

    eine ganz einfache Lösung gibt es nicht, aber folgender Trick sollte funktionnieren:

    PHP-Code:
    Update MyTable                                                 
       set MyInt 
    Cast(MyChar as Integer)                         
     
    where  Length(Trim(Translate(MyChar' ''1234567890'))) = 
    Ich bin in diesem Beispiel davon ausgegangen, dass es sich bei dem numerischen Ergebnis-Feld um ein Integer-Feld handelt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Dec 2003
    Beiträge
    17
    Hallo Birgitta,

    vielen Dank erstmal für die Antwort.

    Weisst du, wo ich Dokumentation über die Funktion "Translate()" und ähnliches im Internet finde?

    Ich werde morgen deine Lösung testen und werde mich dann nochmal melden.

    Viele Grüße

    Otto

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von otto-mueller
    Weisst du, wo ich Dokumentation über die Funktion "Translate()" und ähnliches im Internet finde?
    Otto
    Alle Scalaren Funktionen sind in der SQL-Reference beschrieben, die in der Online-Library zu finden ist:
    SQL Reference

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Dec 2003
    Beiträge
    17

    Thumbs up Super!!!

    Hallo Birgitta,

    danke nochmal für den Tip.

    Das hat ganz gut funktioniert!

    Ich habe wo anders versucht, aus einem Text "," zu entfernen. Dazu habe ich zuerst REPLACE() genommen - die Funktion war unbekannt. Dann habe ich mit TRANSLATE() folgendes versucht:
    PHP-Code:
    Translate(MyChar''','
    Also Komma durch Nichts ersetzen. Das klappt auch nicht. Es kommt eine Fehlermeldung, die sagt, daß die Länge des Parameters '' zu kurz sei?!?!?!

    Wie kann man es denn sonnst lösen?

    Danke nochmal

    Gruß
    Otto

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da wirds schon komplizierter, bzw. in SQL unmöglich.
    Translate ersetzte (also übersetzt) jedes Zeichen der 1. Liste mit dem paarigen Zeichen der 2. Liste. Die 2. Liste kann kürzer sein, für fehlende Stellen werden eben Leerzeichen angenommen.

    Steht der Replace nicht zur Verfügung, uss man aus SUBSTR und POSSTR und CONCAT etwas zusammenbauen, was aber nur mit genau 1 Zeichenkette funktioniert.
    Mehrere Vorkommen können nicht ersetzt werden. Hierzu ist entweder das neue Release einzusetzen, Replace-Funktion, oder per "Create Function" eine eigene Funktion zu erstellen.

    Zu SUBSTR, POSSTR und CONCAT gibt es im Forum Beispiele.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •