Corto -sX- Geschrieben 16. Juli 2010 Teilen Geschrieben 16. Juli 2010 Hallo Leute, ich habe hier ein Problem das mir auch google und mein Großhirn so nicht lösen können. DB ist ORACLE 11g ich teile einen string im loader in mehrere Teilstrings auf, als Trennzeichen nehme ich ein | einer meiner Sätze ist z.b. Verbands|gemeinde|verwaltung|Altenkirchen das ist nur ein Beispiel von mir, echtdaten liegen mir nicht vor. ich hab nur einfach die pipes reingemacht um schonmal meine instr() richtig zu setzen. Mein sql soll die 4 Teile des strings jeweils in ein feld schreiben. die | sollen dabei wegfallen. also eigentlich standart - wie immmer. im Loader habe ich nun folgende Zeilen drin, die mir den String Verbands|gemeinde|verwaltung|Altenkirchen richtig teilen und die pipes weglassen. Dienststelle_name1 "SUBSTR(:Dienststelle_komplett,1,instr(:Dienststelle_komplett,'|')-1)" , Dienststelle_name2 "SUBSTR(:Dienststelle_komplett,instr(:Dienststelle_komplett,'|',1,1)+1,instr(:Dienststelle_komplett,'|',1,1)-1 )", Dienststelle_name3 "SUBSTR(:Dienststelle_komplett,instr(:Dienststelle_komplett,'|',1,2)+1,instr(:Dienststelle_komplett,'|',1,2)-8 )", Dienststelle_name4 "SUBSTR(:Dienststelle_komplett,instr(:Dienststelle_komplett,'|',1,3)+1)" bis zur Zeile 3 sieht das ja gut aus, aber kann mir irgendwer erklären wieso ich -8 angeben muss? also quasi von der ersten stelle die 2te occurance von | -8 ? das macht garkeinen sinn, aber in der db landet es richtig. nur weis ich jetzt schon das ich das ding dynamisch bauen muss, und da wäre es ganz cool zu wissen warum instr() solch komische dinge tut... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. Juli 2010 Teilen Geschrieben 16. Juli 2010 bis zur Zeile 3 sieht das ja gut aus, aber kann mir irgendwer erklären wieso ich -8 angeben muss? also quasi von der ersten stelle die 2te occurance von | -8 ? Der Code ist falsch. Er funktioniert bei diesen Daten nur zufällig, weil die Teilstrings die passende Länge haben. Versuch so etwas nicht mit Trial&Error zu lösen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 16. Juli 2010 Autor Teilen Geschrieben 16. Juli 2010 versuche ich ja nicht, das trail and error war mehr aus verzweiflung und um hier etwas als beispiel nennen zu können was die hilfesteller dann nachvollziehen können. es scheint das wenn ich im substr() sowohl end als als auch anfangspunkt durch instr() angebe, kommt da einfach komischer kappes raus den man nicht mit abzählen nachvollziehen kann. Wieso instr im gegensatz zu substr sich anders verhält kannst du mir aber auch nicht sagen, oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. Juli 2010 Teilen Geschrieben 16. Juli 2010 es scheint das wenn ich im substr() sowohl end als als auch anfangspunkt durch instr() angebe, kommt da einfach komischer kappes raus den man nicht mit abzählen nachvollziehen kann. Das liegt daran, dass der dritte Parameter von substr nicht der Endpunkt ist, sondern die Länge. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 16. Juli 2010 Autor Teilen Geschrieben 16. Juli 2010 D'Oh und damit du mir auch glaubst das ich das in der Zwischenzeit durch einen Geistesblitz selbst gemerkt hab... hier das fertige sql falls jemand durch google hier landet und einen ansatz braucht... danke für die hilfe select SUBSTR('Verbands|gemeinde|verwaltung|Altenkirchen (Westerwald)',instr('Verbands|gemeinde|verwaltung|Altenkirchen (Westerwald)','|',1,1)+1,(instr('Verbands|gemeinde|verwaltung|Altenkirchen (Westerwald)','|',1,2)-instr('Verbands|gemeinde|verwaltung|Altenkirchen (Westerwald)','|',1,1))-1) from dual; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.