Veröffentlicht 21. Juli 200421 j Hallo zusammen, gibt es eine Möglichkeit, in PL/SQL Strings "auszuschneiden"? Ich habe folgenden Preis-String: 1,99 2,99 0,00 1,99 3,99 0,00 2,99 1,99 0,00 Nun muss ich jeden Preis einzeln auslesen und in Variablen schreiben (die Anzahl der Preise ist immer gleich). Da ich aber nicht weiß, ob ein Preis vor dem Komma ein- oder mehrstellig ist, möchte ich mit substr mit immer einen Preis bis zum nächsten Leerzeichen ausgeben. Nur irgendwie fehlt mir da was. Ich bekomme zwar die 1,99 raus, aber beim Rest klappt das nicht. Replace und anschließendes LTrim geht auch nicht, da die 1,99 ja auch mehrfach vorkommen kann... Vielleicht habe ich auch nur ein Brett vorm Kopf, aber vielleicht kennt ihr eine Zeichenfunktion, die mir einen Preis quasi aus dem String "ausschneidet", damit ich immer den String neu von vorne auslesen kann... Gruß Ganymed
21. Juli 200421 j Wie wärs damit DECLARE preis_string varchar2(200) := '1.99 2.03 1.98'; -- usw. pos_space NUMBER := 0; pos_lastSpace NUMBER := 0; preis_einzeln number; BEGIN WHILE instr(preis_string, ' ', pos_lastSpace+1, 1) > 0 LOOP pos_space := instr(preis_string, ' ', pos_lastSpace+1, 1); preis_einzeln := to_number(substr(preis_string, pos_lastSpace+1, pos_space-1)); pos_lastSpace := pos_space; END LOOP; END; So liest du in jedem Druchlauf der Schleife in die Variable preis_einzeln den Preis ein (nicht getestet, sollte aber klappen). Gruss, Axl
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.