次の方法で共有


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