Zeichenkette ab Leerzeichen abschneiden

Hallo,

es kann zwar sein, dass die Frage zu einfach für euch ist, aber mir fällt momentan nix ein:

Ich habe in einer Spalte einer Tabelle verschiedene Zeichenketten stehen, die in etwa so aussehen:

‚xxx […]‘

Also einen gewissen Text, ein Leerzeichen und anschließend einen (nicht immer denselben) Inhalt in eckigen Klammern.
Ich möchte nun gerne wissen, wie ich aus der obigen Darstellung die Zeichenketten so transformieren kann, dass nur der Text vor dem Leerzeichen übrigbleibt, also das Ergebnis

‚xxx‘

lautet.

Beste Grüsse

Michael Zadlo

Oben in Deiner Menüliste findest Du „Format“, wenn Du das anklickst, kommt unter anderem „Zellen“ und darunter gibt es „Zahlen“ - das dürfte sich dann wiederum selbst erklären.
Gruß
Uli

hi!

welche db?

unter oracle etwa mit einem

select substr(feld,1,instr(feld,’[’)-1)
from tabelle

(das -1, um die „[“ nimmer drin zu haben

grüße,
tomh

Ich weiß wirklich nicht, wass ich mit diesem Beitrag anfangen soll?

Gruß

Michael

Oben in Deiner Menüliste findest Du „Format“, wenn Du das
anklickst, kommt unter anderem „Zellen“ und darunter gibt es
„Zahlen“ - das dürfte sich dann wiederum selbst erklären.
Gruß
Uli

OK - der Tip mit Oracle war richtig. :smile:

Aber das Problem ist noch nicht ganz gelöst.
Außer den genannten Einträgen treten auch welche auf, in denen kein Leerzeichen bzw. auch kein ‚[‘ vorkommt. Diese werden mit der Anweisung komplett eliminiert, da instr den Wert ‚0‘ zurückliefert. In diesem Fall sollte jedoch der komplette Name erhalten bleiben.

Weiterhin habe ich auch noch Einträge, bei denen auf das Leerzeichen kein ‚[‘ sondern weiterer Text folgt. Hier möchte ich nun am liebsten einfach das Leerzeichen entfernen (lassen).

Gruß

Michael

P.S.: Eine Funktion, die aus allen Einträgen einfach alle Leerzeichen komplett rauskillt, würde mir evtl. auch schon weiterhelfen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi!

(ich versuch’s mal mit einem select - kann sein, daß ich „mit der kirche um’s kreuz fahre“ …)

select replace(decode(nvl(instr(feld,’[’),0),0,feld,substr(feld,1,instr(feld,’[’)-1),’ ‚,‘’)
from tabelle

erklärungen:

  • nvl(instr(feld,’[’),0) … schaut nach, ob es ein „[“ im text gibt
  • decode(…,0,feld,substr…) … wenn oben ein 0 ("[" kommt nicht vor) rauskommt, wird das gesamte feld, ansonsten nur bis zum „[“ selektiert
  • replace(das_ganze_obere_trumm,’ ‚,‘’) … alle leerzeichen werden durch einen leeren string ersetzt

grüße,
tomh

ps: war es das überhaupt?

Ich habs mittlerweile in PL/SQL mit ner Prozedur selbst irgendwie hinbekommen, aber für die Bestätigung: das, was Du geliefert hast, macht genau das, was ich wollte. :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich weiß wirklich nicht, wass ich mit diesem Beitrag anfangen
soll?

Gruß

Michael

Hi Michael,
du bist Vorbereitet auf ORACLE 15i, nachdem Oracle ein Joint Venture mit Microsoft geschlossen hat und EXCEL-Funktionalitäten volle Integration gefunden haben.

Kleiner Scherz meinerseits an einem ach so trüben Tag

Grüße

Ratloser

Oben in Deiner Menüliste findest Du „Format“, wenn Du das
anklickst, kommt unter anderem „Zellen“ und darunter gibt es
„Zahlen“ - das dürfte sich dann wiederum selbst erklären.
Gruß
Uli

hi!

du bist Vorbereitet auf ORACLE 15i

also, wenn schon, ORACLE 15z (seit 10 ist doch das „i“ vollkommen out)

nachdem Oracle ein Joint
Venture mit Microsoft geschlossen hat und
EXCEL-Funktionalitäten volle Integration gefunden haben.

wui, fegefeuer und weihwasser vermischen sich? da glaub ich aber eher, daß microsoft den source für windows offen legt, da bill gates mittlerweile total auf linux abfährt …

grüße,
tomh