sql-server - SQL Server 2016 JSON_VALUE 语法

标签 sql-server json sql-server-2016

我有一个 API 以以下形式返回数据:

  "cars" : {"VW":{"name":"Volkswagen","country":"Germany"}, 
            "GM":{"name":"General Motors","country":"USA"},
            "RR":{"name":"Rolls Royce","country":"UK"}
            }

使用 JSON_VALUE ,如何引用两个字符指示符“VW”、“GM”等?
我可以使用路径 $.cars 获取名称和国家/地区但看不到如何获取(未命名)字段。 API 不是我的,所以我无法规定格式。

最佳答案

这个查询会返回什么?

set @json = N'  
["cars" : {
    "VW":{
        "name":"Volkswagen",
        "country":"Germany"}, 
    "GM":{
        "name":"General Motors",
        "country":"USA"},
    "RR":{
        "name":"Rolls Royce",
        "country":"UK"}
}]';

select *   
from OPENJSON( @json ) 

你能分享一下输出吗?

我很抱歉给出这个答案,但评论太长了,这个查询可能有助于找到 OP 想要获取的元素。

编辑#1

这个:
Declare @js nvarchar(4000) = N'{"cars" : {
            "VW":{"name":"Volkswagen","country":"Germany"}, 
            "GM":{"name":"General Motors","country":"USA"},
            "RR":{"name":"Rolls Royce","country":"UK"}}}'

SELECT [key]
FROM OPENJSON (@js,'$.cars')

会给你你需要的值(value)。

编辑#2

你可以引用这个值:
SELECT p1.[key],
       p2.[key],
       p2.[value]
FROM OPENJSON (@js, '$.cars') as p1
CROSS APPLY (
    SELECT *
    FROM OPENJSON ([value], '$')
) p2
WHERE p1.[key] = 'VW'

输出:
key key     value      
--- ------- ---------- 
VW  name    Volkswagen 
VW  country Germany    

(2 row(s) returned)

关于sql-server - SQL Server 2016 JSON_VALUE 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39543633/

相关文章:

c# - 从文本文件导入 SQL Server 数据库,我应该选择什么解决方案?

java - DHXScheduler 保存/获取自定义灯箱字段

sql-server - 我可以在 SQL 查询中使用什么来帮助我确定为什么我的查询没有返回任何数据结果

sql-server - 为什么 SQL 中是 199.96 - 0 = 200?

sql-server - 在 Microsoft SQL Server 中使用复合键

c# - 从 C# 调用存储过程时出错

c# - 尝试在 C# WPF 应用程序中捕获

c# - 在 C# 中从字符串创建 JSON 对象

json - 在 Ionic 2 页面之间导航和传递数据

sql - 如何检查 View 是否存在,如果不存在则创建