Anmelden

View Full Version : SQL variable Startposition einer Zeichenkette



cicero22
06-03-17, 12:06
Hallo zusammen,

ich suche mit SQL eine Möglichkeit in einer Zeichenkette z.B. ein Benutzernamen und eine Aktion an einer immer variablen Position zu finden.

Beispiel:

10.203.20.12 - Benutzername / Aktion3
100.217.201.4 - Benutzername2 / Aktion4

Duch die unterschiedlich lange IP adresse rutscht der Benutzername mal nach hinten - mal nach vorne - steht aber immer nach dem "-". Ebenso rutscht auch die Aktion dann nach hinten oder nach vorne (aber auch diese steht immer nach dem "/").

Möchte nun mit einem Select sauber den Benutzernamen und die ausgeführte Aktion finden und strukturiert darstellen.

Vielen Dank für Eure Hilfe.

Gruß cicero22

B.Hauser
06-03-17, 12:14
Vorausgesetzt, dass der Benutzer-Name immer nach dem - beginnt und die Aktion immer nach dem Slash,
kannst Du die Position dieser Zeichen über eine skalaren Funktioneb POSSTR oder LOCATE ermitteiln.

POSSTR und LOCATE können auch innerhalb eines Substrings verwendet werden. Es muss nur sichergestellt werden, dass POSSTR und LOCATE keine 0 (nicht gefunden) zurückliefern.

Birgitta

cicero22
06-03-17, 12:36
Super ;-)

Vielen Dank - genau das suchte ich. Funktionert.

Danke und VG
Dirk

Fuerchau
06-03-17, 12:45
Wenn man dann noch den POSSTR/LOCATE in einen NULLIF einbettet, kann man das Ganze dann noch in einem einzigen Zusammenhange bringen:

coalesce (substring(MyFeld from nullif(position(' - ' in MyFeld), 0) ), 'User fehlt')