共用方式為


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

適用於:SQL Server 2016 (13.x)及以後版本Azure SQL 資料庫Azure SQL Managed InstanceAzure Synapse Analytics(僅限 serverless SQL pool 使用)Microsoft Fabric 中的 SQL Analytics 端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

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

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

特殊字元的轉義

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

特殊字元 跳脫輸出
引號 (") \"
反斜線 (\) \\
斜線 (/) \/
Backspace \b
表單摘要 \f
換行 \n
回車鍵 \r
水平 Tab 鍵 \t

控制角色

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

控制特徵 編碼輸出
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"
    }
]