在下面的示例中,如何转义 @data 变量中的双引号字符?
declare @data nvarchar(max) = N'"TEST"';
declare @jsonFragment nvarchar(max);
declare @id int = 999;
set @jsonFragment = ',"' + cast(@id as nvarchar(16)) + '":"' + @data + '"';
select @jsonFragment;
结果是:
,"999":""TEST""
我需要它是:
,"999":"\"TEST\""
据我了解,选择for json path
需要我定义一个静态键名 - 但可以看出,我有一个动态定义键名的场景。
在我的实际用例中,此字符串构造发生在stuff
语句中,它本身是使用 CTE 的较大列定义的一部分select
- 这意味着很难创建动态 sql 语句以使用sp_executeSQL
.
为此目的,有一个称为STRING_ESCAPE的系统函数,它将根据给定字符串类型的需要对字符进行转义。
在您的示例中:
回报:
它适用于所有需要转义的元素,例如路径名中的斜杠,例如:
退货