我正在尝试这样做:
JSON_VALUE(@jsondata, CONCAT('$.[', @count, '].Name')
这样我可以使用变量引用我的json列表中的值,但是JSON_VALUE函数需要第二个参数(JSON Path)的字符串文字。
有没有办法让函数读取字符串作为字符串文字,或者用变量引用列表的其他方式?
感谢。
答案 0 :(得分:0)
您可以使用OPENJSON
将表格解析为表格来处理带有变量的列表。
例如,给定:
declare @jsondata nvarchar(max) = '[
{"Name":"zero","Value":"cero"},
{"Name":"one","Value":"uno"},
{"Name":"two","Value":"dos"},
{"Name":"three","Value":"tres"}
]'
declare @count int set @count = 1
declare @val nvarchar(50)
set @val = (select JSON_VALUE(value, '$.Name') from OPENJSON(@JsonData) d where d."key" = @count)
select @count, @val
对于更高级的方法,您可以使用描述您感兴趣的结构和元素的模式查询JSON: