Benutzer mit den meisten Antworten
STRING_ESCAPE umkehren

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
Antworten
-
Da kannst du leider nur mit Replace die Daten entfernen:
https://stackoverflow.com/questions/951518/replace-a-newline-in-tsql- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 15. Oktober 2019 08:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Oktober 2019 07:17
-
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.
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- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 15. Oktober 2019 08:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Oktober 2019 07:17
Alle Antworten
-
Da kannst du leider nur mit Replace die Daten entfernen:
https://stackoverflow.com/questions/951518/replace-a-newline-in-tsql- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 15. Oktober 2019 08:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Oktober 2019 07:17
-
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.
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- Als Antwort vorgeschlagen Christoph Muthmann Dienstag, 15. Oktober 2019 08:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Oktober 2019 07:17