Ilja: MSSQL 2000 Sonderzeichen filtern

yo,

nun habe ich auch mal eine frage bezüglich datenbanken, genauer gesagt zu MSSQL 2000. mir fehlen dort einige funktionen, die ich in oracle lieb gewonnnen habe.

was ich zum einen will ist, aus einem string alle sonderzeichen filtern, sprich es sollen nur alphanumerische werte vorkommen. gibt es dafür in MSSQL eine gute lösung, bzw. wie genau benutze ich reguläre ausdrücke in mssql ?

des weiteren suche ich eine funktion wie TRANSLATE unter oracle, wo ich verschiedene zeichen durch andere zeichen ersetzen kann, ohne das ich die REPLACE funktion mehrmals verschachteln muss.

Ilja

  1. Hi,

    mir ist für MS SQL 2000 nicht bekannt, dass es da

    • RegEx-Funktionen oder
    • Translate-Funktionen
      gäbe.

    Unter MS SQL 2005 kannst du dir sowas aber ziemlich performant selbst bauen. CLR Integration ist das Stichwort. Ich habe bei uns immerhin schon etwa 30 verschiedene Funktionen rund um Text (wie u.a. Regex, Splitting, Translate, Padding, Formatting, Levenshtein) mithilfe von CLR umgesetzt. Die CLR Funktionen dafür müssen noch nicht mal in der selben Datenbank liegen, eine kleine nebenher und Synonyme machen es genauso gut.

    Cheers, Frank

    1. yo,

      Unter MS SQL 2005 kannst du dir sowas aber ziemlich performant selbst bauen. CLR Integration ist das Stichwort. Ich habe bei uns immerhin schon etwa 30 verschiedene Funktionen rund um Text (wie u.a. Regex, Splitting, Translate, Padding, Formatting, Levenshtein) mithilfe von CLR umgesetzt. Die CLR Funktionen dafür müssen noch nicht mal in der selben Datenbank liegen, eine kleine nebenher und Synonyme machen es genauso gut.

      das system ist sql 2000. CLR sagt mir so auf den ersten blick nichts, werde es mir aber mal zu gemüte tun. aber so wie es aussieht, werden wir wohl auch eigene funktionen erstellen müssen.

      Ilja

      1. yo,

        yo yo ba  ....ööööööllll

        CLR = Common Language Runtime = .Net. Schreibst ein Assembly mit ein paar statischen Methoden und lädst es in die DB und kannst das Zeug benutzen wie native Funktionen

        Wenn ein Upgrade auf SQL 2005 nicht möglich ist, kannst du zusätzliche Funktionen über COM+ bereitstellen. sp_oa_create und so. Ich hatte es ja gelesen, dass du für SQL 2000 fragst, aber da das System so steinalt ist empfiehlt sich vielleicht mal ein Upgrade? ;)

        Eine Translate-Funktion als reine SQL "FUNCTION" umzusetzen dürfte verdammt langsam werden.

        Ansonsten geht natürlich auch (immer) Transaktion beginnen, Daten rausziehen, verarbeiten, wieder reinschreiben, Transaktion beenden.

        Ciao, Frank