适用于:SQL Server 2016 (13.x) 及更高版本
 Azure SQL 数据库 
Azure SQL 托管实例
对文本中的特殊字符进行转义并返回有转义字符的文本。 STRING_ESCAPE 是 SQL Server 2016 中引入的一个确定性的函数。
语法
STRING_ESCAPE( text , type )  
参数
text
表示应转义的对象的 nvarchar 表达式。
type
对将要应用的规则进行转义。 目前支持的值是 'json'。
返回类型
带有已转义的特殊和控制字符的 nvarchar(max) 文本。 当前,STRING_ESCAPE 仅能对下表中的 JSON 特殊字符进行转义。
| 特殊字符 | 编码的序列 | 
|---|---|
| 引号 (") | \" | 
| 反斜线号 (\) | \\ | 
| 斜线号 (/) | \/ | 
| Backspace | \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') );