Schutz von Sonderzeichen und Steuerzeichen durch FOR JSON (SQL Server)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics (nur serverloser SQL-Pool)

In diesem Artikel wird beschrieben, wie die FOR JSON Klausel einer SQL Server-Anweisung SELECT Sonderzeichen escapet und Steuerzeichen in der JSON-Ausgabe darstellt.

Wichtig

In diesem Artikel wird die integrierte Unterstützung für JSON in Microsoft SQL Server beschrieben. Allgemeine Informationen zum Escapeen und Codieren in JSON finden Sie in Abschnitt 2.5 des JSON RFC.

Escapezeichen von Sonderzeichen

Wenn die Quelldaten Sonderzeichen enthalten, wird die FOR JSON Klausel in der JSON-Ausgabe mit \escapes, wie in der folgenden Tabelle dargestellt. Dieser Schutz tritt in den Namen von Eigenschaften und in ihren Werte auf.

Sonderzeichen Ausgabe mit Escapezeichen
Anführungszeichen (") \"
Umgekehrter Schrägstrich (\) \\
Schrägstrich (/) \/
Rücktaste \b
Seitenvorschub \f
Zeilenwechsel \n
Wagenrücklauf \r
Horizontaler Tabulator \t

Steuerzeichen

Wenn die Quelldaten Steuerzeichen enthalten, codiert die FOR JSON Klausel sie in der JSON-Ausgabe im \u<code> Format, wie in der folgenden Tabelle dargestellt.

Steuerzeichen Codierte Ausgabe
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Beispiel

Hier sehen Sie ein Beispiel für die FOR JSON Ausgabe für Quelldaten, die Sowohl Sonderzeichen als auch Steuerzeichen enthalten.

Abfrage:

SELECT 'VALUE\    /
  "' AS [KEY\/"],
    CHAR(0) AS '0',
    CHAR(1) AS '1',
    CHAR(31) AS '31'
FOR JSON PATH;

Ergebnis:

[
    {
        "KEY\\\/\"": "VALUE\\    \/\r\n  \"",
        "0": "\u0000",
        "1": "\u0001",
        "31": "\u001f"
    }
]

Nächste Schritte