STRING_ESCAPE (Transact-SQL)

适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例

对文本中的特殊字符进行转义并返回有转义字符的文本。 STRING_ESCAPE 是 SQL Server 2016 中引入的一个确定性的函数

Transact-SQL 语法约定

语法

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

另请参阅