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