Zum Inhalt springen

instr() macht kuriose Dinge - need help


Corto -sX-

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...