如何使用变量引用JSON列表值

时间:2017-06-14 14:12:44

标签: sql sql-server tsql sql-server-2016

我正在尝试这样做:

JSON_VALUE(@jsondata, CONCAT('$.[', @count, '].Name')

这样我可以使用变量引用我的json列表中的值,但是JSON_VALUE函数需要第二个参数(JSON Path)的字符串文字。

有没有办法让函数读取字符串作为字符串文字,或者用变量引用列表的其他方式?

感谢。

1 个答案:

答案 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: