共用方式為


FOR JSON 如何逸出特殊字元和控制字元 (SQL Server)

適用於: SQL Server 2016 (13.x) 以上版本 Azure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics (僅無伺服器 SQL 集區)

本文描述 SQL Server SELECT 陳述式的 FOR JSON 子句如何逸出特殊字元,並在 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"
    }
]

下一步