FOR JSON 如何转义特殊字符和控制字符

适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics (仅限无服务器 SQL 池)SQL 分析终结点 MicrosoftMicrosoft Fabric SQL 数据库中的 Microsoft Fabric SQL 数据库中,Microsoft Fabric 预览版

本文介绍了 SQL Server FOR JSON 语句的 SELECT 子句在 JSON 输出中如何转义特殊字符以及如何表示控制字符。

此页介绍了 Microsoft SQL Server 中对 JSON 的内置支持。 有关 JSON 中转义和编码的一般信息,请参阅 JSON RFC 的第 2.5 部分。

特殊字符转义

如果源数据包含特殊字符,则 FOR JSON 子句在 JSON 输出中会使用 \ 对其进行转义,如下表中所示。 在属性名称及其值中,均会发生这种转义。

Special character Escaped output
引号 (") \"
反斜杠 (\) \\
斜杠 (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t

Control characters

如果源数据包含控制字符,则 FOR JSON 子句在 JSON 输出中会使用 \u<code> 格式对其进行编码,如下表中所示。

Control character Encoded output
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

下面是同时包含特殊字符和控制字符的源数据的 FOR JSON 输出的示例。

Query:

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

Result:

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