如何处理JSON_VALUE路径中的美元($)登录

时间:2019-05-20 14:31:33

标签: json sql-server

我们将数据作为JSON字符串存储在我们的数据库中。 由于使用了Newtonsoft JSON,因此该数据包含键中带有$符号的字段。

是否可以使用MSSQL中的JSON_VALUE函数查询这些字段?

我尝试的查询引发异常 JSON路径格式不正确。在位置2处发现意外字符'$'。

SELECT JSON_VALUE(JsonData, '$.$type') FROM dbo.JsonTable

JsonData看起来像这样:

{
   "$type": "Project.Classes.JsonType",
   "amount": 50
}

1 个答案:

答案 0 :(得分:1)

可能您应该尝试使用以下语法。 Documentation指出,如果密钥名称以美元符号开头或包含特殊字符(例如空格),则需要用引号将其引起来。

T-SQL:

DECLARE @json nvarchar(max) = N'{"$type": "Project.Classes.JsonType", "amount": 50}'
SELECT JSON_VALUE(@json, '$."$type"') AS JsonValue

输出:

------------------------ 
JsonValue
------------------------ 
Project.Classes.JsonType