[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    327

    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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Nov 2020
    Beiträge
    315
    Auch hier wieder mit Regex einfach den Pfad entfernen.

    Code:
    where regexp_like(path_name, '/[^/]*\.temp[^/]*$', 'i')
    \. = der Punkt ist ein Steuerzeichen und muss deshalb mit \ escaped werden
    [^/] = Steht für ein beliebiges Zeichen welches KEIN "/" ist. Dadurch wird sichergestellt, dass wir hier keinen Pfad haben.
    * = Das davor stehende Zeichen kann 0-n mal vorkommen
    $ = Ende des Zeichens
    'i' = ignoriere Groß/Kleinschreibung

    lg Andreas

  4. #4
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Andreas_Prouza Beitrag anzeigen
    Auch hier wieder mit Regex einfach den Pfad entfernen.

    Code:
    where regexp_like(path_name, '/[^/]*\.temp[^/]*$', 'i')
    \. = der Punkt ist ein Steuerzeichen und muss deshalb mit \ escaped werden
    [^/] = Steht für ein beliebiges Zeichen welches KEIN "/" ist. Dadurch wird sichergestellt, dass wir hier keinen Pfad haben.
    * = Das davor stehende Zeichen kann 0-n mal vorkommen
    $ = Ende des Zeichens
    'i' = ignoriere Groß/Kleinschreibung

    lg Andreas
    Hallo Andreas, regexp_like wird nicht gefunden, was ist das und würde das auch die subdirectories entfernen, so dass der Filename alleine steht?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    SQL Regex muss als zusätzliches Feature (kostenlos) installiert werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Nov 2020
    Beiträge
    315
    Genau, 5770SS1 Option 39 „International Components for Unicode“.
    Hat keine zusätzliche Kosten und sollte auf jeder IBM i installiert werden.

  7. #7
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    SQL Regex muss als zusätzliches Feature (kostenlos) installiert werden.
    OK, vielen Dank, das kannte ich bisher nicht.

  8. #8
    Registriert seit
    Nov 2020
    Beiträge
    315
    Zitat Zitat von itec01 Beitrag anzeigen
    Hallo Andreas, regexp_like wird nicht gefunden, was ist das und würde das auch die subdirectories entfernen, so dass der Filename alleine steht?
    Genau, die Tiefe der Subdirectories spielt hier keine Rolle, es wird der gesamte Pfad damit ausgeschlossen, sodass immer nur der Filename hier greift.

  9. #9
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Andreas_Prouza Beitrag anzeigen
    Genau, die Tiefe der Subdirectories spielt hier keine Rolle, es wird der gesamte Pfad damit ausgeschlossen, sodass immer nur der Filename hier greift.
    Dankeschön, dann werden wir das installieren.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.)"
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. BigInt Variable aus Pointer String extrahieren
    By derMuller in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-12-22, 00:04
  2. CPYFRMARCF - Daten aus einem Archiv extrahieren
    By edig in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 25-01-19, 16:20
  3. Antworten: 2
    Letzter Beitrag: 09-09-10, 18:55
  4. Extrahieren Hausnummer und Zusätze von einem Strassennamen
    By peter.kinne in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 04-02-09, 10:58
  5. Variabler Filenamen bei READ möglich
    By takeoff/400 in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 24-09-08, 08:11

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •