【发布时间】:2017-05-18 09:40:40
【问题描述】:
有什么方法可以像下面这样在打开的 json 中将路径指定为变量?
DECLARE @JSON NVARCHAR(MAX)
set @JSON = '{ "amounts": [
{
"Charge_Id": "368",
"Amount": "800",
"FineType_Id": 3,
"user_id": 2
},
{
"Charge_Id": "368",
"Amount": "600",
"FineType_Id": 4,
"user_id": 2
}
]
}';
DECLARE @counter int
DECLARE @expression NVARCHAR(50)
set @counter = 0
set @expression = ‘$.amounts[‘+CONVERT(NVARCHAR(10),@counter)+’]’
SELECT *
FROM OPENJSON(@JSON,@expression)
WITH(Charge_Id int, Amount money, FineType_Id int, user_id int)AS JSON
因为这会导致错误
消息 102,级别 15,状态 1,第 31 行附近的语法不正确 '@表达'。消息 319,级别 15,状态 1,第 32 行语法不正确 在关键字'with'附近。如果这个语句是公用表 表达式、xmlnamespaces 子句或更改跟踪上下文 子句,前面的语句必须以分号结束。
感谢您的帮助
【问题讨论】:
标签: sql sql-server json sql-server-2016