2017-06-14 1 views
0

verweist ich, dies zu tun versuche:Wie JSON Liste Wert mit einer Variablen

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

, so dass ich einen Wert in meiner json Liste mit einer Variablen verweisen kann, aber die JSON_VALUE Funktion erfordert eine Stringliteral für das zweite Argument (JSON-Pfad).

Gibt es eine Möglichkeit, die Funktion entweder eine Zeichenfolge als String-Literal lesen oder eine andere Möglichkeit, eine Liste mit einer Variablen zu referenzieren?

Danke.

Antwort

0

Sie können eine Liste mit einer Variablen adressieren, indem Sie sie in eine Tabelle unter Verwendung von OPENJSON destrukturieren.

Zum Beispiel gegeben:

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 

Eine erweiterte Methode, die Sie JSON mit einem Schema abgefragt werden können, die die Struktur und die Elemente beschrieben, die Sie interessiert sind:

Verwandte Themen