如何在 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
我正在使用 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