適用対象: SQL Server 2016 (13.x) 以降
Azure SQL Database
Azure SQL Managed Instance
テキストの特殊文字をエスケープし、エスケープ文字付きのテキストを返します。 STRING_ESCAPE は SQL Server 2016 で導入された決定的関数です。
構文
STRING_ESCAPE( text , type )
引数
text
エスケープする必要があるオブジェクトを表す nvarchar expression です。
type
適用される規則をエスケープします。 現在サポートされている値は 'json' です。
戻り値の型
エスケープされた特殊文字と制御文字を含む nvarchar (max) テキスト。 現在、STRING_ESCAPE は次の表に示すように JSON 特殊文字のみをサポートします。
| 特殊文字 | エンコードされたシーケンス |
|---|---|
| 引用符 (") | \" |
| 逆斜線 (\) | \\ |
| 斜線 (/) | \/ |
| バックスペース | \b |
| フォーム フィード | \f |
| 改行 | \n |
| キャリッジ リターン | \r |
| 水平タブ | \t |
| 制御文字 | エンコードされたシーケンス |
|---|---|
| CHAR(0) | \u0000 |
| CHAR(1) | \u0001 |
| ... | ... |
| CHAR(31) | \u001f |
解説
例
A. JSON 形式の規則に従ってテキストをエスケープする
次のクエリでは、JSON の規則を使用して特殊文字をエスケープし、エスケープされたテキストを返します。
SELECT STRING_ESCAPE('\ /
\\ " ', 'json') AS escapedText;
結果セットは次のとおりです。
escapedText
-------------------------------------------------------------
\\\t\/\n\\\\\t\"\t
B. JSON オブジェクトの書式設定
次のクエリでは、数値変数と文字列変数から JSON テキストを作成し、変数内の任意の JSON 特殊文字をエスケープします。
SET @json = FORMATMESSAGE('{ "id": %d,"name": "%s", "surname": "%s" }',
17, STRING_ESCAPE(@name,'json'), STRING_ESCAPE(@surname,'json') );