如何处理 JSON_VALUE 路径中的美元 ($) 符号

Jon*_*aye 5 sql-server json

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

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

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

SELECT JSON_VALUE(JsonData, '$.$type') FROM dbo.JsonTable
Run Code Online (Sandbox Code Playgroud)

JsonData 看起来像这样:

{
   "$type": "Project.Classes.JsonType",
   "amount": 50
}
Run Code Online (Sandbox Code Playgroud)

Zho*_*rov 7

文档中所述,如果键名以美元符号开头或包含特殊字符(如空格),则需要用引号将键名括起来。

T-SQL:

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

输出:

------------------------ 
JsonValue
------------------------ 
Project.Classes.JsonType
Run Code Online (Sandbox Code Playgroud)