如何在 JSON root 中使用声明的变量,同时将 table 数据转换为 SQL 服务器中的 JSON?

How to use Declared variables in JSON root, while convert table data to JSON in SQL server?

我正在使用 SQL 服务器。

我尝试从 SQL server 中的 table 数据中获取 JSON 值。在我的例子中,我想得到 ROOT 作为我从 Declared VARIABLE.

中得到的

这是我的代码:

DECLARE @TpiType VARCHAR(64)='SMS'
 ,@TpiName VARCHAR(24)='PLIVO'
 ,@Purpose VARCHAR(24)='SYSTEM'

DECLARE @Purpose2 VARCHAR(24)

SET @Purpose2=@Purpose +'%'

SELECT Name,Value 
FROM MyTable 
WHERE Type=@TpiType AND Name=@TpiName 
AND NAME LIKE @Purpose2
FOR JSON AUTO,ROOT(@TpiType)

当我尝试这个时,它显示错误:

Incorrect syntax near '@TpiType'.

但是如果我将字符串值直接赋给根,它就可以正常工作。但是当我传递变量时,它会抛出错误。

请帮我解决这个问题。提前致谢。

您可能会发现使用动态 sql 在这里很有帮助:

DECLARE @TpiType VARCHAR(64)='''SMS''' 
 ,@TpiName VARCHAR(24)='''PLIVO'''
 ,@Purpose VARCHAR(24)='''SYSTEM'

DECLARE @Purpose2 VARCHAR(24)

SET @Purpose2=@Purpose +'%'''

Declare @sql VARCHAR(2000)
Set @sql = 'SELECT Name,Value 
FROM MyTable 
WHERE Type=' +@TpiType+' AND 
Name=' +@TpiName +' 
AND NAME LIKE ' +@Purpose2+' 
FOR JSON AUTO,ROOT(' +@TpiType+')'

Print @sql -- check if this prints the sql script correctly
--Exec (@sql) -- run this to execute dynamically created script