Anmelden

View Full Version : Moin *all



Seiten : [1] 2

mk
26-07-17, 07:27
Hallo zusammen,

irgendwie ist heute nicht mein Tag.


Ich habe folgenden SQL String

/home/USRIFS/Artikel_Kunde.xls


Ich möchte jetzt den Dateinamen extrahieren.
Das Ergebnis soll sein:
Artikel_Kunde.xls


Ich brauche also den letzten /
Ab dieser Position die restlichen Zeichen


Das will mir mit SQL einfach nicht gelingen.
Hat jemand einen Tipp?

Gruß
Michael

andreaspr@aon.at
26-07-17, 09:14
Falls du IBM i 7.3 hast kannst du es mit den neuen Regex-Funktionen lösen:

VALUES (regexp_substr('/home/USRIFS/Artikel_Kunde.xls', '\w+(?:\.\w+)*$') )

lg Andreas

mk
26-07-17, 15:31
Hi Andreas,

danke für den Tipp
Leider haben wir noch V7R2

andreaspr@aon.at
26-07-17, 15:44
Dann wäre eine kleine SQL Funktion am schnellsten.

dschroeder
26-07-17, 16:07
Folgendes SQL bringt bei mir das gewünschte Ergebnis:

SELECT
RIGHT(
'/home/USRIFS/Artikel_Kunde.xls'
,LENGTH('/home/USRIFS/Artikel_Kunde.xls') - LOCATE_IN_STRING('/home/USRIFS/Artikel_Kunde.xls','/',-1)
)
FROM sysdummy1
;

Fuerchau
26-07-17, 16:29
Und ab welchem Release/TR hast du LOCATE_IN_STRING?

andreaspr@aon.at
26-07-17, 16:47
7.1: SF99701 Level 38
7.2: SF99702 Level 9

ExAzubi
27-07-17, 07:58
Also wir haben auch 7.2 und können die RegExp-Funktion in SQL nutzen ==> Und sie funktioniert :)

andreaspr@aon.at
27-07-17, 08:30
Stimmt ...

IBM i 7.1 TR9
IBM i 7.2 TR1

Robi
27-07-17, 08:45
Wow, ...
@andreaspr

ist REGEX auf der i identisch mit REGEX in anderen Sprachen oder gibt es da Syntax unterschiede?
Hast du eine link in dem REGEX auf i erklährt wird?
oder eine kurze Übersetzung deiner Lösung?

Danke
Robi