适用于: SQL Server 2016 (13.x) 及以后版本
Azure SQL 数据库
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 数据库
对文本中的特殊字符进行转义并返回有转义字符的文本。
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') );