適用対象:Sql Server 2016 (13.x) 以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (サーバーレス SQL プールのみ )、Microsoft Fabric の SQL 分析エンドポイント
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 |
| 水平タブ | \t |
制御文字
ソース データに制御文字が含まれる場合、FOR JSON 句は JSON 出力の制御文字を \u<code> 形式でエンコードします。次の表をご覧ください。
| 制御文字 | エンコードされた出力 |
|---|---|
| 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"
}
]