[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    833

    Telefonnummern Zeichen ersetzen

    Hallo *ALL,

    ich baue einen View mit Telefonnummern.


    Also z.B.

    Ländervorwahl +49
    Ortsvorwahl 02055
    Anschluss 444
    Durchwahl 123

    Diese werden zu einem Feld zusammengefügt.
    trim(a.kdtelvw) concat trim( a.KDTEOVW ) concat trim( a.KDPTTE) concat trim( a.KDTEDWL ) as Telefonnummer ,


    In den einzelnen Feldern können aber auch - oder / oder sonstige zeichen stehen

    Gibt es im SQL eine Möglichkeit alles zu trimmen und ersetzten was nicht numerisch ist ?

    Gruß
    Michael

  2. #2
    Registriert seit
    May 2007
    Beiträge
    295
    Hallo.
    Nichts mir bekanntes.
    Ganz naiv würde ich dir aber eine UDF vorschlagen zu basteln welches die Zeichen mittels REPLACE bereits entfernt.
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  3. #3
    Registriert seit
    Oct 2019
    Beiträge
    16
    Hallo,

    hier eine SQL UDF um alles nicht-numerische aus Strings zu entfernen:
    Code:
    CREATE OR REPLACE FUNCTION STRPNONNUM(VAL VARCHAR(50))
        RETURNS VARCHAR(50)
        LANGUAGE SQL
        DETERMINISTIC
        CONTAINS SQL
        RETURNS NULL ON NULL INPUT
        ALLOW PARALLEL
        NO EXTERNAL ACTION
        BEGIN
            RETURN REPLACE(TRANSLATE(VAL,' ',x'000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFFAFBFCFDFEFF'), ' ');
        END;

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    REGEXP_REPLACE kann das!

    Code:
    Select RegexP_Replace(TelefonNr, '[\D]', ''), TelefonNr, x.*
       from YourTable x
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Oct 2019
    Beiträge
    16
    Wenn die View viel genutzt wird, ist es vielleicht sinnvoll zu testen welche Variante die bessere Performance hat. Wobei die REGEX Variante natürlich die elegantere Variante ist.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Diese Variante kann man auch in einen Computed Index aufnehmen, dann ist das Suchen per View mit diesem Ausdruck über einen Index gewährleistet.
    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
    Jan 2001
    Beiträge
    833
    Hi zusammen,
    sorry für die späte Rückmeldung.
    Unser Azubi hat die Variante mit der Regex als SQL Funktion erstellt

    RETURN REGEXP_REPLACE(givenString, '[^[:digit:]]');

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ist das selbe:
    \D => [^[:digit:]]

    Es sei denn, die IBM unterstützt \D nicht.
    Regex ist case sensitive:
    \d = Ziffern
    \D <> Ziffern
    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. Euro Zeichen aus IFS Datei UTF8 ersetzen
    By chrisssiie in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 15-09-19, 12:51
  2. Zeichen ersetzen
    By programmer400 in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-11-15, 07:46
  3. RPG im String ein Zeichen ersetzen
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 12-08-08, 06:11
  4. Telefonnummern für Performancedatenübertragung
    By TARASIK in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 22-10-04, 07:32
  5. Suchen/Ersetzen?
    By Matthias.Hayn in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 15-07-02, 07:03

Berechtigungen

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