转义字符查询
问题描述:
我有以下的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'
)
它不喜欢在最后破折号修改字段。
消息13607,级别16,状态4,第18行
JSON路径的格式不正确。在位置6找到意外的字符' - '。
有没有办法在查询中转义破折号?如果没有短划线,一切正常。
以支持JSON需要,我使用SQL Server 2016兼容级别= 130
答
周围添加字段名称双引号,似乎工作
SELECT
*
FROM
OPENJSON(JSON_QUERY(@jsonData,'$.insertions'))
WITH
(uuid UNIQUEIDENTIFIER '$.id',
modified DATETIME '$."last-modified"',
Label NVARCHAR(128) '$.label'
)