Sql-Server
使用 OPENJSON 列舉 JSON 數組
我一直在努力將我的一些基於 XML 的儲存過程轉換為 JSON,但我遇到了一個問題。
使用 OPENXML,我可以訪問 mp:id,因此當我解析 XML 時,我可以在查詢中訪問元素及其在 XML 中的位置。
我想用 OPENJSON 做類似的事情。這是一個例子
DECLARE @JSON VARCHAR(MAX) = '[ {"Fruit":"Apple"}, {"Fruit":"Banana"}, {"Fruit":"Pineapple"} ]' SELECT Fruit FROM OPENJSON(@JSON,'$') WITH (Fruit VARCHAR(24) '$.Fruit')
對於每種水果,我也希望有它的位置(即,1 代表蘋果,2 代表香蕉,等等)。
有誰知道如何用 OPENJSON 做到這一點?
使用不帶 OPENJSON
WITH
來投影每個元素的位置。例如DECLARE @JSON VARCHAR(MAX) = '[ {"Fruit":"Apple"}, {"Fruit":"Banana"}, {"Fruit":"Pineapple"} ]' SELECT cast([key] as int) ix, json_value(value,'$.Fruit') Fruit FROM OPENJSON(@JSON,'$')
輸出
ix Fruit ----------- ------------- 0 Apple 1 Banana 2 Pineapple