対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
SQL Database in Microsoft Fabric
テキストの特殊文字をエスケープし、エスケープ文字付きのテキストを返します。
STRING_ESCAPE は、SQL Server 2016 で最初に導入された決定論的関数です。
構文
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') );