[NEWSboard IBMi Forum]

Thema: Moin *all

  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    833

    Red face Moin *all

    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

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Falls du IBM i 7.3 hast kannst du es mit den neuen Regex-Funktionen lösen:
    Code:
    VALUES (regexp_substr('/home/USRIFS/Artikel_Kunde.xls', '\w+(?:\.\w+)*$') )
    lg Andreas

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    833
    Hi Andreas,

    danke für den Tipp
    Leider haben wir noch V7R2

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    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
    ;

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Und ab welchem Release/TR hast du LOCATE_IN_STRING?
    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

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  8. #8
    Registriert seit
    Apr 2005
    Beiträge
    385
    Also wir haben auch 7.2 und können die RegExp-Funktion in SQL nutzen ==> Und sie funktioniert

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    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
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  11. #11
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Es gibt schon in diversen sprachen leichte Unterschiede, aber in der Praxis konnte ich diese großteils bis jetzt vernachlässigen.

    Eine hübsche Doku findest du hier:
    https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

    Und hier auch noch eine Zusammenfassung der erlaubten Operatoren und deren Erklärungen:
    https://www.ibm.com/support/knowledg...xp_likecontrol

    Im Grunde kann man schon Regex verwenden ohne sich im Detail damit auskennen zu müssen.

    Beispiel:
    Du willst ein Passwortcheck machen
    * min. 8 Zeichen
    * max. 20 Zeichen
    * min. 1 Großbuchstabe
    * min. 1 Kleinbuchstabe
    * min. 1 Zahl
    * min. 1 Sonderzeichen
    Du gehst auf google und findest einen Haufen von "Patterns", verwendest ihn und fertig. Du ersparst dir ein ganzes Programm dafür zu schreiben.

    Ich verwende Regex mittlerweile fast überall (Notepad++, SQL, RPG, RDi, shell, ...).
    Es wird immer mehr unterstützt und erleichtert vieles.

    lg Andreas

Berechtigungen

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