SQL OpenJson-无法在json中为json创建列
我一直在玩sql中的OPENJSON,我有一个问题 假设我有以下JSONSQL 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":{"$
[
{ "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,很好,你说到点子上了。除息的