none
Nichtdruckbare Zeichen Per SQL Befehl aus String entfernen RRS feed

  • Frage

  • Hallo Forum,

    ich habe hier eine Anwendung die kommt nicht mit Nichtdruckbaren Zeichen ala Zeilenumbruch Tab usw zurecht.

    kann ich irgendwie per SQL Statement bei der abfrage dne String so manipulieren das alle nicht druckbaren zeichen mit einem leerzeichen ersetzt werden?

    danke und TIA

    Michael

    Donnerstag, 28. April 2011 13:31

Antworten

  • Hallo Michael,

    ich habe hier eine Anwendung die kommt nicht mit Nichtdruckbaren Zeichen ala Zeilenumbruch Tab usw zurecht.

    zum einen ist das dann wohl nicht wirklich eine Anwendung, sondern eher ein halbgares Konstrukt aus Codefragmenten.

    Zum anderen sind Zeilenumbruch, Tab, ... nicht unbedingt "nichtdruckbare" Zeichen. Es wird zwar für diese Zeichen nichts schwarzes (oder buntes^^) aufs Papier gebracht, für den Druck selbst sind die aber wichtig. Es gibt andere Steuerzeichen, die bestimmte Befehle im Drucker auslösen, die stehen aber im Normalfall nicht in einem Textfeld in einer Datenbank.

    kann ich irgendwie per SQL Statement bei der abfrage dne String so manipulieren das alle nicht druckbaren zeichen mit einem leerzeichen ersetzt werden?

    Mit SQL direkt IMHO nicht. Man könnte per CLR Methode und Regex alles filtern, was nicht gewünscht wird. Aber dafür müsstest Du eine .NET Assembly im SQL Server hinterlegen oder alternativ eine VBScript Funktion aufrufen können.

    Einzig der manuelle Weg (jedes einzelne Zeichen des Strings nehmen und dann schauen, ob der Charcode in den gewünschten Bereichen [die aber sehr vielfältig sein können] liegt und falls nicht, durch ein Leerzeichen ersetzen) wäre denkbar. Aber das willst Du nicht, da bin ich mir ganz sicher :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 28. April 2011 15:42
    Moderator

Alle Antworten

  • hi,

    du suchst wohl nach REPLACE():

    http://msdn.microsoft.com/de-de/library/ms186862(v=sql.90).aspx

    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Donnerstag, 28. April 2011 13:34
    Moderator
  • Ja, mein Problem ist nur ich weiss nicht genau, welche Steuerzeichen alle in dem String enthalten sind...

    gibt es dafür irgedenwie einen Platzhalter ala "IsCharachter" oder so?

     

    Datenbank ist MSSQL2005

     

    Gruß

    Michael

     

    Donnerstag, 28. April 2011 14:11
  • hi,

    Nö. Macht ja auch keinen Sinn, da es ja immer von deiner speziellen Anwendung und gegebenenfalls vom Drucker abhängt, welche Zeichen "druckbar" sind oder nicht.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Donnerstag, 28. April 2011 14:13
    Moderator
  • Hallo Michael,

    ich habe hier eine Anwendung die kommt nicht mit Nichtdruckbaren Zeichen ala Zeilenumbruch Tab usw zurecht.

    zum einen ist das dann wohl nicht wirklich eine Anwendung, sondern eher ein halbgares Konstrukt aus Codefragmenten.

    Zum anderen sind Zeilenumbruch, Tab, ... nicht unbedingt "nichtdruckbare" Zeichen. Es wird zwar für diese Zeichen nichts schwarzes (oder buntes^^) aufs Papier gebracht, für den Druck selbst sind die aber wichtig. Es gibt andere Steuerzeichen, die bestimmte Befehle im Drucker auslösen, die stehen aber im Normalfall nicht in einem Textfeld in einer Datenbank.

    kann ich irgendwie per SQL Statement bei der abfrage dne String so manipulieren das alle nicht druckbaren zeichen mit einem leerzeichen ersetzt werden?

    Mit SQL direkt IMHO nicht. Man könnte per CLR Methode und Regex alles filtern, was nicht gewünscht wird. Aber dafür müsstest Du eine .NET Assembly im SQL Server hinterlegen oder alternativ eine VBScript Funktion aufrufen können.

    Einzig der manuelle Weg (jedes einzelne Zeichen des Strings nehmen und dann schauen, ob der Charcode in den gewünschten Bereichen [die aber sehr vielfältig sein können] liegt und falls nicht, durch ein Leerzeichen ersetzen) wäre denkbar. Aber das willst Du nicht, da bin ich mir ganz sicher :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 28. April 2011 15:42
    Moderator
  • Naja auf die Anwendung hab ich keine Einfluss (source liegt nicht vor), die validiert halt den String den ich ihr aus einer Datenbank gegeben habe,

    und scheinbar ist in dieser validierung so etwas wie "IsChar".

     

    Damit das halt nicht in der Anwendung zu Problemen führt wollt ich den String direkt schon aufbereitet aus der Datenbank liefern.

    Aber der tipp per RegEx und VBScript werde ich aufgreifen der scheint am praktikabelsten sein.

    Eine Riesige Replace verkettung im SQL Satement ist mir tatsächlich zu umständlich...

     

    Gruß

    Michael

    Donnerstag, 28. April 2011 19:42
  • hi,

    Verkettung ist nicht notwendig. Siehe

    http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/e7fdecd7-a322-4cc1-b939-5dd13fa15a38


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Freitag, 29. April 2011 09:05
    Moderator