STRING_ESCAPE (Transact-SQL)
適用対象: 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') );