none
STRING_ESCAPE umkehren RRS feed

  • Frage

  • Hallo,

    gibt es in SQL Server eine Möglichkeit, aus einem String, welcher von einem JSON Object kommt, die maskierten Steuerzeichen zu entfernen/umzuwandeln? Also das Gegenteil von STRING_ESCAPE durchzuführen.

    Ich erhalte Daten aus einer externen Datenbank über ein JSON-File. Dort habe ich bspw. das Feld "Bemerkung", welches mir vom Designer der Schnittstelle mit CHAR(200) vorgegeben ist. Dies habe ich auch so in einer Tabelle drin. Wenn jetzt in dem JSON im Feld "Bemerkung" ein Text von 200 Zeichen Länge drin ist, aber die Steuerzeichen, wie meinetwegen ein Zeilenumbruch mit \n codiert ist, dann wird im ungünstigsten Fall die Länge überschritten und mein Datenbankimport läuft in einen Fehler.

    Die sendende Stelle hat den Text mit 200 Zeichen (inkl. Zeilenumbrüche) eingetragen, dann werden die Daten für den Versand in das JSON gepackt und wachsen durch das Characterescaping. Da ich nicht händisch auf alle möglichen Steuerzeichen prüfen möchte, suche ich nach einer Möglichkeit, das Escaping umzukehren.

    Grüße

    Eiko

    Montag, 14. Oktober 2019 14:33

Antworten

  • Da kannst du leider nur mit Replace die Daten entfernen:
    https://stackoverflow.com/questions/951518/replace-a-newline-in-tsql

    Montag, 14. Oktober 2019 15:44
  • Hi,

    da es nicht allzu viele Ersetzungen sind und mir auch keine STRING_UNESCAPE Funktion in SQL Server bekannt ist, kommst Du um eine manuelle Ersetzung wie von bfurcheau geschrieben, wohl nicht drumrum.

    STRING_ESCAPE (Transact-SQL)

    Sonderzeichen 	      Codierte Sequenz
    --------------------------------------
    Anführungszeichen (")              \"
    Umgekehrter Schrägstrich (\)       \\
    Schrägstrich (/)                   \/
    Rücktaste                          \b
    Seitenvorschub                     \f
    Neue Zeile                         \n
    Wagenrücklauf                      \r
    Horizontaler Tabstopp              \t
    --------------------------------------
    
    Steuerzeichen 	      Codierte Sequenz
    --------------------------------------
    CHAR(0)                         \u0000
    CHAR(1)                         \u0001
    ...                                ...
    CHAR(31)                        \u001f
    --------------------------------------

    Das machst Du dann entsprechende über REPLACE Aufrufe rückgängig.



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 14. Oktober 2019 17:18
    Moderator

Alle Antworten

  • Da kannst du leider nur mit Replace die Daten entfernen:
    https://stackoverflow.com/questions/951518/replace-a-newline-in-tsql

    Montag, 14. Oktober 2019 15:44
  • Hi,

    da es nicht allzu viele Ersetzungen sind und mir auch keine STRING_UNESCAPE Funktion in SQL Server bekannt ist, kommst Du um eine manuelle Ersetzung wie von bfurcheau geschrieben, wohl nicht drumrum.

    STRING_ESCAPE (Transact-SQL)

    Sonderzeichen 	      Codierte Sequenz
    --------------------------------------
    Anführungszeichen (")              \"
    Umgekehrter Schrägstrich (\)       \\
    Schrägstrich (/)                   \/
    Rücktaste                          \b
    Seitenvorschub                     \f
    Neue Zeile                         \n
    Wagenrücklauf                      \r
    Horizontaler Tabstopp              \t
    --------------------------------------
    
    Steuerzeichen 	      Codierte Sequenz
    --------------------------------------
    CHAR(0)                         \u0000
    CHAR(1)                         \u0001
    ...                                ...
    CHAR(31)                        \u001f
    --------------------------------------

    Das machst Du dann entsprechende über REPLACE Aufrufe rückgängig.



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 14. Oktober 2019 17:18
    Moderator
  • Hm, dann werd ich es wohl vor dem Import schon konvertieren.

    Danke euch.

    Montag, 14. Oktober 2019 19:57