如何在 SQL Server 2016 中使用 OPENJSON 在 Json 中使用 space 读取字段名称

How to read field name with space in Json using OPENJSON in SQL Server 2016

如何使用 Sql 中的 OPENJSON 从包含 space 的 json 文件中读取值服务器 2016。见以下代码:

DECLARE @json NVARCHAR(MAX)
SET @json = N'{ "full name" : "Jayesh Tank"}';
SELECT * FROM OPENJSON(@json) WITH ( [name] [varchar](60) '$.full name')

space 中的另一个示例代码在字段名称之后。

SET @json = N'{ "name   " : "abc"}';
SELECT * FROM OPENJSON(@json) WITH ( [name] [varchar](60)    '$.name')

'$.name' return null.Is 有办法读取这个值吗?

通常在属性名称中使用空格是个坏主意。

我会从您的 OPENJSON 名称和 varchar(60) 中省略 [ ] - source MSDN OPENJSON.

现在正式回答你的问题:

您需要在 WITH 子句中用双引号格式化您的属性:

@DECLARE @json NVARCHAR(MAX);
SET @json=N'{ "full name" : "Jayesh Tank"}';
SELECT * FROM OPENJSON(@json) WITH (name varchar(60) '$."full name"')

第二个:

SET @json = N'{ "name   " : "abc"}';
SELECT * FROM OPENJSON(@json) WITH ( name varchar(60)'$."name   "')