PDA

View Full Version : String ausschneiden



heynem
19-03-03, 16:59
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

Fuerchau
19-03-03, 18:48
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.]

malzusrex
19-03-03, 19:19
hier ein kleines rpgproggi


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.]

rmittag
20-03-03, 09:15
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