1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

alle Ziffern aus String ersetzen

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Wolf-Tilmann, 1 März 2016.

  1. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    Einen schönen, kalten, guten Morgen,

    könnt Ihr mir hier bitte noch einmal helfen?
    Ich habe eine Tabelle mit Anschriften. In diese Tabelle geben mehrere Personen Daten ein.
    Eines der Datenfelder lautet: "strasse". Leider haben einige der Personen auch die Hausnummer dort eingegeben. Es gibt nämlich ein eigenes Datenfeld "hausnummer".
    Ob in "hausnummer" etwas steht oder nicht ist momentan unerheblich.
    Gibt es eine Möglichkeit aus den Datenfeldern "strasse" alle Ziffern auf einen Rutsch zu entfernen?
    Ich hatte mir so etwas vorgestellt wie:
    Code:
    REPLACE(strasse, IN('0','1','2','3','4','5','6','7','8','9'), '')
    Ich habe zwar gegooglet aber nichts passendes gefunden, außer für jede Ziffer eine Replaceanweisung und die dann verschachteln.

    Danke schon einmal
    Einen schönen Gruß
    Wolf-Tilmann
     
  2. ukulele

    ukulele Datenbank-Guru

    Bei 10 Ziffern sind das 10 replace()-Aufrufe, das ist überschaubar. Dazu noch ltrim() und rtrim() und fertig.

    Wenn du natürlich auch Buchstaben und Bindestriche in deinem Nummernteil hast wird es schwieriger, da würde ich anders vorgehen.
     
  3. Wolf-Tilmann

    Wolf-Tilmann Aktiver Benutzer

    Genau betrachtet habe ich Euch mein Problem absolut falsch dargestellt :oops:

    Als Hausnummern kommen vor:
    Alle Ziffern [0 - 9]
    Sonderzeichen ['/','-']
    Buchstaben [a-d] und [A-C]

    Idealerweise wäre es super, alles rechts und ab dem 1. Ziffernzeichen zu löschen.

    Schönen Gruß
    Wolf-Tilmann
     
  4. ukulele

    ukulele Datenbank-Guru

    Also ich hab das vorletzte Woche noch gemacht :)
    Code:
    UPDATE   tabelle
    SET     neu_strasse = rtrim(left(alt_strassehausnr,patindex('%[0-9]%',alt_strassehausnr)-1))
    WHERE  alt_strassehausnr LIKE '%[0-9]%'
    
    UPDATE   tabelle
    SET     neu_hausnr = ltrim(right(alt_strassehausnr,datalength(alt_strassehausnr)-datalength(neu_strasse)))
    WHERE   ltrim(right(alt_strassehausnr,datalength(alt_strassehausnr)-datalength(neu_strasse))) != alt_strassehausnr
    Das ist MSSQL könnte also in Access etwas abweichen. Wenn deine Spalten NVARCHAR und nicht VARCHAR sind solltest du len() statt datalength() benutzen.
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden