通过


STRING_ESCAPE(Transact-SQL)

适用于: SQL Server 2016 (13.x) 及以后版本 Azure SQL 数据库Azure SQL Managed InstanceMicrosoft Fabric 中的 SQL 数据库

对文本中的特殊字符进行转义并返回有转义字符的文本。 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') );