共用方式為


FOR JSON 如何逸出特殊字元和控制字元

適用於: SQL Server 2016 (13.x)和更新版本,Azure SQL DatabaseAzure SQL 受控實例Azure Synapse Analytics(僅限無伺服器 SQL 集區)SQL 分析端點 Microsoft FabricWarehouse in Microsoft Fabric

本文描述 SQL Server FOR JSON 陳述式的 SELECT 子句如何跳脫特殊字元,並在 JSON 輸出中表示控制字元。

重要

本文描述 Microsoft SQL Server 中的內建 JSON 支援。 有關 JSON 中逸出和編碼的一般資訊,請參閱 JSON RFC 的第 2.5 節。

特殊字元的轉義

如果來源資料包含特殊字元,FOR JSON 子句會使用 \ 在 JSON 輸出中逸出這些字元,如下表所示。 在屬性名稱和它們的值中都會發生這項逸出。

特殊字元 逸出的輸出
引號 (") \"
反斜線 (\) \\
斜線 (/) \/
退格鍵 \b
換頁字元 \f
新行 \n
換行字符 \r
水平 Tab 鍵 \t

控制字元

如果來源資料包含控制字元,FOR JSON 子句會以 \u<code> 格式在 JSON 輸出中對這些字元進行編碼,如下表所示。

控制字元 編碼的輸出
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

範例

以下是來源資料的 FOR JSON 輸出範例,它包含特殊字元和控制字元。

查詢:

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

結果:

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