STRING_ESCAPE (Transact-SQL)

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance

テキストの特殊文字をエスケープし、エスケープ文字付きのテキストを返します。 STRING_ESCAPE は SQL Server 2016 で導入された決定的関数です。

Transact-SQL 構文表記規則

構文

STRING_ESCAPE( text , type )  

引数

text
エスケープする必要があるオブジェクトを表す nvarcharです。

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') );  

参照