STRING_ESCAPE(Transact-SQL)

対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン Azure SQL DatabaseAzure SQL Managed InstanceSQL Database in Microsoft Fabric

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

Transact-SQL 構文表記規則

構文

STRING_ESCAPE( text , type )  

引数

text

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

type

適用される規則をエスケープします。 現在サポートされている値は 'json' です。

戻り値の型

エスケープされた特殊文字と制御文字を含む nvarchar (max) テキスト。

現在、 STRING_ESCAPE は、次の表に示す JSON 特殊文字のみをエスケープできます。

特殊文字 エンコードされたシーケンス
Quotation mark (") \"
Reverse solidus (\\) \\
Solidus (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \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') );