我有以下JSON数据
DECLARE @jsonData NVARCHAR(MAX)
SET @jsonData =
'{
"insertions":[
{
"id":"58735A79-DEA8-462B-B3EB-C2797CA9D44E",
"last-modified":"2017-08-08 13:07:32",
"label":"HelloWorld1"
},
{
"id":"00565BCD-4240-46CF-A48F-849CB5A8114F",
"last-modified":"2017-08-08 13:11:38",
"label":"HelloWorld12"
}
]
}'
尝试从中进行选择:
SELECT
*
FROM
OPENJSON(JSON_QUERY(@jsonData,'$.insertions'))
WITH
(uuid UNIQUEIDENTIFIER '$.id',
modified DATETIME '$.last-modified',
Label NVARCHAR(128) '$.label'
)
它不喜欢上次修改过的字段中的破折号。
Msg 13607,Level 16,State 4,Line 18
JSON路径格式不正确。意外的角色' - '在第6位找到。
有没有办法逃避查询中的短划线?如果没有破折号,一切正常。
根据需要支持JSON,我使用兼容级别= 130的SQL Server 2016
答案 0 :(得分:10)
在字段名称周围添加双引号似乎可以正常工作
SELECT
*
FROM
OPENJSON(JSON_QUERY(@jsonData,'$.insertions'))
WITH
(uuid UNIQUEIDENTIFIER '$.id',
modified DATETIME '$."last-modified"',
Label NVARCHAR(128) '$.label'
)