Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL OpenJson-无法在json中为json创建列_Sql_Json_Open Json - Fatal编程技术网

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

SQL OpenJson-无法在json中为json创建列,sql,json,open-json,Sql,Json,Open Json,我一直在玩sql中的OPENJSON,我有一个问题 假设我有以下JSON [ { "id" : 2,"firstName": "John", "lastName": "Smith", "age": 25, "dateOfBirth": "2007-03-25T12:00:00", "data":{"$

我一直在玩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
数据
之外,我正在取回每一列


请随意编辑问题标题

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

非常感谢。这正是我在项目的另一部分中设置常量的方式。我用了'source VARCHAR(50)'$.data.“$source”','np,很好,你说到点子上了。除息的