適用於:SQL Server 2016 (13.x)及以後版本
Azure SQL 資料庫
Azure SQL Managed Instance
Azure 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"
}
]