-
IFS Filenamen aus PATH_NAME extrahieren
Hallo Zusammen,
ein Frage zum extrahieren von File und Pfad direkt im SQL wegen %Like. Der like soll sich nur auf die Files beziehen.
Beispiel:
SELECT cast(PATH_NAME as varchar(250)) path
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/temp','YES'))
WHERE upper(PATH_NAME) LIKE '%.TEMP%';
Es soll in der Ergebnisliste aber nur die Files mit TEMP verarbeitet werden.
Man müsste PATH_NAME in PATH und FILENAME extrahieren und dann über FILENAME den %Like machen, aber nur wie?
Wenn es zu kompliziert wird, dann werde ich es im RPG auseinander nehmen.
Vielen Dank schon mal.
Gruß Klaus
-
In etwa so:
join (
select last_value(text) over() from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
)
Wobei "text" mit dem Namen der Ergebnisspalte von Split zu ersetzen ist.
-
Zitat von Fuerchau
In etwa so:
join (
select last_value(text) over() from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
)
Wobei "text" mit dem Namen der Ergebnisspalte von Split zu ersetzen ist.
Danke, Puuh, not so easy. Wie kann ich das mit meinem SQL von oben "verwurschteln". Wäre super und vielen Dank schon mal.
-
Du kannst erst mal versuchen, ob du den Split hast.
https://www.ibm.com/support/pages/systoolssplit
left join TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/')) S on 1=1
Der '/' ist ggf. als '\' zu ersetzen.
Damit kannst du schon mal die Feldnamen von S.* ermitteln.
Da ich keine ibm i gerade zur Hand habe, kann ich das leider nicht selber testen.
Wenn das klappt, gehts an die OLAP-Funktion.
https://www.ibm.com/docs/en/i/7.3?to...specifications
Dazu brauchst du eine Derived Table => Select * fom (select ....) a
left join (
select * from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
) S
Wenn das klappt, dann
left join (
select last_value(Spaltenname) over() from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
) S
Ansonsten musst du bis morgen warten, da habe ich wieder Zugang zu einer IBM i.
-
Zitat von Fuerchau
Du kannst erst mal versuchen, ob du den Split hast.
https://www.ibm.com/support/pages/systoolssplit
left join TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/')) S on 1=1
Der '/' ist ggf. als '\' zu ersetzen.
Damit kannst du schon mal die Feldnamen von S.* ermitteln.
Da ich keine ibm i gerade zur Hand habe, kann ich das leider nicht selber testen.
Wenn das klappt, gehts an die OLAP-Funktion.
https://www.ibm.com/docs/en/i/7.3?to...specifications
Dazu brauchst du eine Derived Table => Select * fom (select ....) a
left join (
select * from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
) S
Wenn das klappt, dann
left join (
select last_value(Spaltenname) over() from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
) S
Ansonsten musst du bis morgen warten, da habe ich wieder Zugang zu einer IBM i.
reicht dicke bis morgen, danke.
-
Zitat von Fuerchau
Du kannst erst mal versuchen, ob du den Split hast.
https://www.ibm.com/support/pages/systoolssplit
left join TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/')) S on 1=1
Der '/' ist ggf. als '\' zu ersetzen.
Damit kannst du schon mal die Feldnamen von S.* ermitteln.
Da ich keine ibm i gerade zur Hand habe, kann ich das leider nicht selber testen.
Wenn das klappt, gehts an die OLAP-Funktion.
https://www.ibm.com/docs/en/i/7.3?to...specifications
Dazu brauchst du eine Derived Table => Select * fom (select ....) a
left join (
select * from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
) S
Wenn das klappt, dann
left join (
select last_value(Spaltenname) over() from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '/'))
) S
Ansonsten musst du bis morgen warten, da habe ich wieder Zugang zu einer IBM i.
Irgendetwas mache ich noch falsch. Was muss ich bei Spaltennamen angeben. Der Split funktioniert.
SELECT S.*
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/temp/itec','YES'))
left join (select last_value(????) over() from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '\')) S on 1=1
wHERE upper(PATH_NAME) LIKE '%/OLD%';
-
Mach doch erst mal einen
SELECT S.*
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/temp/itec','YES')) P
left join (select * from TABLE(SYSTOOLS.SPLIT(PATH_NAME, '\')) S on 1=1
damit du den Resultspaltennamen erfährst.
-
Man kanns auch kompliziert machen...
Code:
SELECT
PATH_NAME,
SUBSTR(PATH_NAME, 1, LOCATE_IN_STRING(PATH_NAME, '/', -1)) AS PATH,
SUBSTR(PATH_NAME, LOCATE_IN_STRING(PATH_NAME, '/', -1) + 1) AS FILENAME
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/home/PGMRSTIX','YES'))
-
... deshalb sollte Regex auf jedem System installiert sein. Ist auch von der Performance um einiges schneller.
-
Zitat von Ahoy
Man kanns auch kompliziert machen...
Code:
SELECT
PATH_NAME,
SUBSTR(PATH_NAME, 1, LOCATE_IN_STRING(PATH_NAME, '/', -1)) AS PATH,
SUBSTR(PATH_NAME, LOCATE_IN_STRING(PATH_NAME, '/', -1) + 1) AS FILENAME
FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS('/home/PGMRSTIX','YES'))
Danke, das verstehe auch ich jetzt ;-). Ich hatte es auch schon mit dem locate versucht, aber die Erkenntnis mit dem -1 hat mir gefehlt.
-
Zu Regex siehe hier:
https://www.itjungle.com/2015/05/19/fhg051915-story01/
"The new Regular Expression Functions Require licensed product #39 5770-SS1 International Components for Unicode to be installed on both IBM i 7.1 and 7.2. (This product is free with IBM i.)"
-
Zusammenfassend vielen Dank für die Hilfe und es gibt wie immer viele Wege, die nach Rom führen.
Der für mich verständlichste Weg war LOCATE_IN_STRING, regex ist schon sehr kryptisch, aber ich werde es installieren und testen.
Similar Threads
-
By derMuller in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 07-12-22, 23:04
-
By edig in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 25-01-19, 15:20
-
By roman in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 09-09-10, 17:55
-
By peter.kinne in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 04-02-09, 09:58
-
By takeoff/400 in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 24-09-08, 07:11
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks