SQL OpenJson - 无法在 json 内为 json 创建列

SQL OpenJson - Cannot create a column for json inside of json

我一直在玩 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.

,我正在恢复每一列

随时编辑问题标题

不太清楚为什么您的来源以“$”开头。如果要从嵌套 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)