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

Zeichenkette bereinigen / multiple replace() Operationen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ukulele, 19 September 2013.

  1. ukulele

    ukulele Datenbank-Guru

    Ich möchte Zeichenketten von störenden Sonderzeichen etc. befreien die beim Vergleich von zwei Zeichenketten miteinander eher hinderlich sind. Biser läuft das unter anderem so:

    Code:
        SET        @bezeichnung = replace(@bezeichnung,'','')
        SET        @bezeichnung = replace(@bezeichnung,'²','2')
        SET        @bezeichnung = replace(@bezeichnung,'³','3')
        SET        @bezeichnung = replace(@bezeichnung,'ß','ss')
        SET        @bezeichnung = replace(@bezeichnung,'@','at')
        SET        @bezeichnung = replace(@bezeichnung,'€','e')
        SET        @bezeichnung = replace(@bezeichnung,'ä','ae')
        SET        @bezeichnung = replace(@bezeichnung,'ö','oe')
        SET        @bezeichnung = replace(@bezeichnung,'ü','ue')
        SET        @bezeichnung = replace(@bezeichnung,'á','a')
        SET        @bezeichnung = replace(@bezeichnung,'é','e')
        SET        @bezeichnung = replace(@bezeichnung,'í','i')
        SET        @bezeichnung = replace(@bezeichnung,'ó','o')
        SET        @bezeichnung = replace(@bezeichnung,'ú','u')
        SET        @bezeichnung = replace(@bezeichnung,'à','a')
        SET        @bezeichnung = replace(@bezeichnung,'è','e')
        SET        @bezeichnung = replace(@bezeichnung,'ì','i')
        SET        @bezeichnung = replace(@bezeichnung,'ò','o')
        SET        @bezeichnung = replace(@bezeichnung,'ù','u')
        SET        @bezeichnung = replace(@bezeichnung,'â','a')
        SET        @bezeichnung = replace(@bezeichnung,'ê','e')
        SET        @bezeichnung = replace(@bezeichnung,'î','i')
        SET        @bezeichnung = replace(@bezeichnung,'ô','o')
        SET        @bezeichnung = replace(@bezeichnung,'û','u')
        SET        @bezeichnung = replace(@bezeichnung,'°',' ')
        SET        @bezeichnung = replace(@bezeichnung,'^',' ')
        SET        @bezeichnung = replace(@bezeichnung,'!',' ')
        SET        @bezeichnung = replace(@bezeichnung,'"',' ')
        SET        @bezeichnung = replace(@bezeichnung,'§',' ')
        SET        @bezeichnung = replace(@bezeichnung,'$',' ')
        SET        @bezeichnung = replace(@bezeichnung,'[%]',' ')
        SET        @bezeichnung = replace(@bezeichnung,'/',' ')
        SET        @bezeichnung = replace(@bezeichnung,'=',' ')
        SET        @bezeichnung = replace(@bezeichnung,'\',' ')
        SET        @bezeichnung = replace(@bezeichnung,'#',' ')
        SET        @bezeichnung = replace(@bezeichnung,'.',' ')
        SET        @bezeichnung = replace(@bezeichnung,'[_]',' ')
        SET        @bezeichnung = replace(@bezeichnung,'&',' ')
        SET        @bezeichnung = replace(@bezeichnung,'+',' ')
        SET        @bezeichnung = replace(@bezeichnung,'-',' ')
        SET        @bezeichnung = replace(@bezeichnung,'{','')
        SET        @bezeichnung = replace(@bezeichnung,'(','')
        SET        @bezeichnung = replace(@bezeichnung,'[','')
        SET        @bezeichnung = replace(@bezeichnung,']','')
        SET        @bezeichnung = replace(@bezeichnung,')','')
        SET        @bezeichnung = replace(@bezeichnung,'}','')
        SET        @bezeichnung = replace(@bezeichnung,'?','')
        SET        @bezeichnung = replace(@bezeichnung,'´','')
        SET        @bezeichnung = replace(@bezeichnung,'`','')
        SET        @bezeichnung = replace(@bezeichnung,'*','')
        SET        @bezeichnung = replace(@bezeichnung,'~','')
        SET        @bezeichnung = replace(@bezeichnung,'''','')
        SET        @bezeichnung = replace(@bezeichnung,'>','')
        SET        @bezeichnung = replace(@bezeichnung,'<','')
        SET        @bezeichnung = replace(@bezeichnung,'|','')
        SET        @bezeichnung = replace(@bezeichnung,';','')
        SET        @bezeichnung = replace(@bezeichnung,',','')
        SET        @bezeichnung = replace(@bezeichnung,':','')
        SET        @bezeichnung = replace(@bezeichnung,'·','')
    ...aber schön finde ich das nicht. Kennt da jemand etwas eleganteres und am besten auch performanteres?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Funktionieren reguläre Ausdrücke?
     
  3. ukulele

    ukulele Datenbank-Guru

    Also es gibt jede Menge reguläre Ausdrücke:
    http://technet.microsoft.com/de-de/library/ms174214.aspx
    Aber wenn ich z.B. | als Oder-Funktion versuche anzuwenden:
    Code:
    SET        @bezeichnung = replace(@bezeichnung,'(|)','')
    Tut sich da nichts, ein () wird durchgeschleift. Auch würde es mir nur bei den unteren Fällen helfen.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Naja, ich meine halt sowas wie:

    Code:
    test=*# select regexp_replace('bla() & fasel !|@','[^a-zA-Z0-9 ]','','g');
     regexp_replace
    ----------------
     bla  fasel
    (1 row)
    
     
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