Как обрабатывать знак доллара ($) в пути JSON_VALUE - PullRequest
2 голосов
/ 20 мая 2019

Мы храним данные в виде строки JSON в нашей базе данных.Благодаря использованию Newtonsoft JSON эти данные содержат поля со знаком $ в ключе.

Можно ли запросить эти поля с помощью функции JSON_VALUE в MSSQL?

Запрошенный мной запросвыдает исключение Путь JSON неправильно отформатирован.Неожиданный символ '$' находится в позиции 2.

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

Данные JsonData выглядят так:

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

1 Ответ

1 голос
/ 20 мая 2019

Возможно, вам следует попробовать следующий синтаксис. Документация гласит, что вам необходимо заключить имя ключа в кавычки, если имя ключа начинается со знака доллара или содержит специальные символы, например пробелы.

T-SQL:

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

Выход:

------------------------ 
JsonValue
------------------------ 
Project.Classes.JsonType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...