DB2 stringbearbeitung (nach Komma suchen)
- Dieses Thema hat 6 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 13 Jahre, 12 Monaten von
Anonym.
-
AuthorPosts
-
29. September 2009 um 11:23 Uhr #4050
AnonymInaktivHi Leute,
ich habe eine etwas knifflige Aufgabe zu lösen:
In einem feld einer DB2-Tabelle gibt es ein char-feld mit z.B. folgenden Einträgen:
aaaa , bbbb, cccc
aa,xx
fff,ggg,kkk,llll
oooo,kkkkk
as,dd,dddddddddddddFür den Fall dass es in dem String mehr als 1 Komma gibt, soll alles nach dem 2. Komma gelöscht werden.
Die Frage ist nun, wie man die Stelle des 2. Kommas herausbekommen kann.
Wir haben DB2-V.8 und die kann keine regular expressions!LG Uli
29. September 2009 um 11:49 Uhr #4215
AnonymInaktivHallo Uli,
irgendwas in dieser Art vielleicht:s elect ‚oben‘ as position, l ocate ( ‚,‘, ‚12345,789,123‘, 1 ) as ausgabe f rom sysibm.sysdummy1
u nion all
s elect ‚mitte‘ as position, l ocate ( ‚,‘, ‚12345,789,123‘, l ocate ( ‚,‘, ‚12345,789,123‘, 1 ) +1 ) as ausgabe f rom sysibm.sysdummy1
u nion all
s elect ‚unten‘ as position, l ocate ( ‚,‘, ‚12345,7890123‘, l ocate ( ‚,‘, ‚12345,7890123‘, 1 ) +1 ) as ausgabe f rom sysibm.sysdummy1Ergebnis bei mir:
Position Ausgabe
oben      6
mitte     10
unten      0
bis denn Kay
29. September 2009 um 12:10 Uhr #4338
AnonymInaktivHallo Kay,
irgendwie klappts nicht so recht.
Mit dem locate bekomme ich die Stelle an der das erste Komma steht. Ich brauche aber die Stelle wo das 2. Komma steht.
Für den ersten Satz (aaaa , bbbb, cccc) wäre die Lösung 12, da genau dort das 2. Komma steht.
Du hast in deinem Beispiel einen String eingegeben, ich muss an dieser Stelle einen Feldnamen verwenden. Und ich weiß natürlich nicht welche Inhalte da drin stehen.Das Problem reduziert sich auf die Frage: wie bekommt man das 2. Komma 🙂
LG Uli
29. September 2009 um 12:15 Uhr #4425
AnonymInaktivHallo Uli,
s elect l ocate ( ‚,‘, ‚aaaa , bbbb, cccc‘, l ocate ( ‚,‘, ‚aaaa , bbbb, cccc‘, 1 ) +1 ) as ausgabe f rom sysibm.sysdummy1tuts doch: 12
dann müsste doch
s elect l ocate ( ‚,‘, <feld_name>, l ocate ( ‚,‘, <feld_name>, 1 ) +1 ) as ausgabe f rom sysibm.sysdummy1funktionieren.
bis denn
Kay
29. September 2009 um 12:19 Uhr #4480
AnonymInaktivWAS IST DENN DAS??????
Ich hab doch nur eine Antwort geschrieben 🙂
29. September 2009 um 12:21 Uhr #4509
AnonymInaktivAch das Forum sortiert anders rum – bin ich garnicht gewohnt 🙂
29. September 2009 um 12:25 Uhr #4530
AnonymInaktivHallo Kay,
jetzt hab ichs kapiert mit dem ‚doppelten locate) – dauert manchmal etwas länger 🙂
Es tut auch – jetzt mach ioch noch einen replace nach ‚blank‘ und gut iss !
Vielen Dank auch….
LG uli
-
AuthorPosts
You must be logged in to reply to this topic.