如何在SQL Server的表列中添加从父JSON读取的JSON值?
我试图读取JSON并将值插入表中。在这些值中,有一个是另一个JSON对象。我试图将JSON值插入到列中,但我的代码没有插入任何内容 以下是我迄今为止所做的尝试:如何在SQL Server的表列中添加从父JSON读取的JSON值?,sql,sql-server,jsondb,Sql,Sql Server,Jsondb,我试图读取JSON并将值插入表中。在这些值中,有一个是另一个JSON对象。我试图将JSON值插入到列中,但我的代码没有插入任何内容 以下是我迄今为止所做的尝试: DROP TABLE IF EXISTS #tmp DECLARE @json NVARCHAR(MAX); SET @json = N'[ {"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25}, {"id": 5, "info": {"name"
DROP TABLE IF EXISTS #tmp
DECLARE @json NVARCHAR(MAX);
SET @json = N'[
{"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25},
{"id": 5, "info": {"name": "Jane", "surname": "Smith"}, "dob": "2005-11-04T12:00:00"}
]';
SELECT [id], [info]
INTO #tmp
FROM OPENJSON(@json)
WITH
(
[id] NVARCHAR(100),
[info] NVARCHAR(max)
);
SELECT * FROM #tmp
这是我得到的结果:
id info
--------------
2 NULL
5 NULL
如果我正确理解您的问题,您需要使用文档中提到的
AS JSON
选项:
在列定义中使用AS JSON选项指定
引用的属性包含内部JSON对象或数组。如果你
指定AS JSON选项,列的类型必须为
NVARCHAR(最大值)
声明:
DECLARE @json NVARCHAR(MAX);
SET @json = N'[
{"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25},
{"id": 5, "info": {"name": "Jane", "surname": "Smith"}, "dob": "2005-11-04T12:00:00"}
]';
SELECT [id], [info]
INTO #tmp
FROM OPENJSON(@json) WITH (
[id] NVARCHAR(100) '$.id',
[info] NVARCHAR(max) '$.info' AS JSON
);
结果:
id info
2 {"name": "John", "surname": "Smith"}
5 {"name": "Jane", "surname": "Smith"}
我面临的一个问题是,它为我的实际数据添加了空间。有没有办法删除这些空间?除此之外,谢谢,它解决了问题problem@Araf空格在哪里?比如{………..“name”:“Josn”,“姓氏”:“Smith”…..在括号后面(我用点表示空格,因为堆栈溢出删除了空格)