首页 > 解决方案 > SQL Server - OPENJSON 解析 JSON 文本

问题描述

JSON我在定义为的列中有以下文本nvarchar(max)

{"country":
    {"id":642,
    "name":"ROMANIA",
    "nameEn":"ROMANIA",
    "isoAlpha2":"RO",
    "isoAlpha3":"ROU",
    "currencyCode":"RON",
    "requireState":false,
    "addressType":1,
        "streetTypes":
        [
            {"name":"str.","nameEn":"str."},
            {"name":"","nameEn":""},
            {"name":"ale.","nameEn":"ale."},
            {"name":"int.","nameEn":"int."},
            {"name":"fdt.","nameEn":"fdt."},
            {"name":"pta.","nameEn":"pta."},
            {"name":"bld.","nameEn":"bld."},
            {"name":"drm.","nameEn":"drm."},
            {"name":"cal.","nameEn":"cal."},
            {"name":"sos.","nameEn":"sos."}
        ],
    "quarterTypes":[],
    "postCodeFormats":["","NNNNNN"]
    }
}

我想提取 ID 的值,即 642,我使用了以下语句,但我想知道这是否是正确的方法:

SELECT TOP 1 VALUE
FROM OPENJSON(@jsonBody, '$.country')

如何在不使用的情况下仅提取 id 元素的值TOP 1

标签: jsonsql-server

解决方案


更精确的方法是实际表明您想要返回 ID,而不是假设它始终是第一个值。

SELECT *
FROM OPENJSON(@, N'$.country')
WITH (id int '$.id')

推荐阅读