0

我一直在 sql 中使用 OPENJSON 并有一个问题。

假设我有以下 JSON,

[
 { "id" : 2,"firstName": "John", "lastName": "Smith",
   "age": 25, "dateOfBirth": "2007-03-25T12:00:00", "data":{"$source":"Online"} },
]

我可以使用 OPENJSON 为除了source.

这是我的代码:

  SELECT *
  FROM OPENJSON(@json)
  WITH (id int, firstName nvarchar(50), lastName nvarchar(50),
        age int, dateOfBirth datetime2, [$Source] varchar(50))

除了嵌套的 json 之外,我正在恢复每一列data

随意编辑问题标题

4

1 回答 1

1

不太清楚为什么您的来源以“$”开头。如果要从嵌套的 json 中获取数据,则需要标识列的根。例如

DECLARE @JSON NVARCHAR(max) = 
N'[
 { "id" : 2,"firstName": "John", "lastName": "Smith",
   "age": 25, "dateOfBirth": "2007-03-25T12:00:00", "data":{"source":"Online"} }
]'

SELECT *
  FROM OPENJSON(@json)
  WITH (id int, firstName nvarchar(50), lastName nvarchar(50),
        age int, dateOfBirth datetime2, 
        source VARCHAR(50) '$.data.source',
        data nvarchar(max) AS JSON)
        
于 2021-02-03T16:24:55.713 回答