STRING_ESCAPE (Transact-SQL)
适用于: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') );