[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2
  1. #13
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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.

  2. #14
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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%';

  3. #15
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    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.
    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

  4. #16
    Registriert seit
    Oct 2019
    Beiträge
    16
    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'))

  5. #17
    Registriert seit
    Nov 2020
    Beiträge
    315
    ... deshalb sollte Regex auf jedem System installiert sein. Ist auch von der Performance um einiges schneller.

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

  7. #19
    Registriert seit
    Sep 2004
    Beiträge
    327
    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.

  8. #20
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Wieder was gelernt, LOCATE_IN_STRING kannte ich auch noch nicht.
    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

  9. #21
    Registriert seit
    Sep 2004
    Beiträge
    327
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wieder was gelernt, LOCATE_IN_STRING kannte ich auch noch nicht.
    Alternativ geht auch https://www.ibm.com/docs/en/db2/11.5...unctions-instr

  10. #22
    Registriert seit
    Jan 2007
    Beiträge
    904
    Wenn Du nur den Filenamen brauchst:

    SELECT SUBSTR(PATH_NAME, LOCATE_IN_STRING(PATH_NAME, '/', -1) + 1) AS FILENAME
    FROM TABLE(IFS_OBJECT_STATISTICS(
    START_PATH_NAME => ('/temp'),
    OBJECT_TYPE_LIST => '*STMF'))
    WHERE UPPER (PATH_NAME) LIKE '%.TEMP%'



    @Baldur: Holger hätte sicher noch Free Accounts auf seiner PUB400 ;-)
    kf

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
  •