[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2002
    Beiträge
    21

    Angry String ausschneiden

    Hallo alle zusammen,
    seit geraumer Zeit versuche ich das folgende: in Beschreibungen in Spalte PDES möchte ich gerne den Wert nach dem letzten Komma wiedergeben. Zum Beispiel "f.HP xycyvy,EP,schwarz" => Das Ergebnis sollte in diesem Fall schwarz sein. Es können aber auch andere (kürzere) Werte erscheinen. Anders erklärt, gehe von rechts nach links, bis zum ersten Komma und gib' diesen Wert zurück.
    Ist sicherlich mit SQL recht einfach ich komme nur nicht darauf.
    Besten Dank im voraus an alle....

    Michael


  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Ganz so einfach ist es leider nicht, mit POSSTR(Feld, ',', 1) ermittelst du die Stelle des 1. Kommas, mit POSSTR(Feld, ',', POSSTR(Feld, ',', 1) + 1) die Stelle des 2. Kommas, dann lautet der ganze Befehl:

    substr(feld, posstr(feld, ',', posstr(feld, ',', 1) + 1) + 1, 10)

    10 steht für die Restlänge, kann natürlich auch anders sein.

    Du siehst, es hängt von der Anzahl Kommas ab. Wenn du keine Kommas hast oder eine andere Anzahl, hast du ein Problem. Dann bleibt doch nur wieder RPG/LE.


    [Dieser Beitrag wurde von Fuerchau am 19. März 2003 editiert.]
    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

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121

    Post

    hier ein kleines rpgproggi
    Code:
    c     *entry        plist                                              
    c                   parm                    feld1           100        
    c                                                                      
    c                   clear                   pos               4 0      
    c                   eval      pos   = %scan(',':feld1)                 
    c                   dow       pos   > *zeros                           
    c                   eval      feld1 = %replace(%subst(feld1   :pos+1:     
    c                                                     %len(feld1)-pos):
    c                                              feld1)                  
    c                   eval      pos   = %scan(',':feld1)                 
    c                   enddo                                              
    c                                                                      
    c                   eval      *inlr = *on
    am ende steht im feld1 nur noch der rest nach dem leztm komma

    gruß ronald



    [Dieser Beitrag wurde von malzusrex am 20. März 2003 editiert.]

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    340

    Post

    und jetzt das Program als Prozedur in ein Service Programm, dann ( wie im Redbook "SG24-6503-00:Stored Procedures and Triggers on DB2 Universal Database for iSeries" beschrieben ) als User-Defined-Function erstellen und es geht in SQL :

    select MyFunc(MyColumn) ...

    Gruß
    Rolf

Similar Threads

  1. String mit Returns in iSeries Datenfeld speichern
    By e_sichert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-11-06, 15:25
  2. String zusammenstellen
    By edig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 07-07-06, 10:51
  3. Systemdatum nach String
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 03-07-06, 15:25
  4. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 07:45
  5. Programmname aus String ermitteln
    By LaLeLi in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-06-02, 08:38

Berechtigungen

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