SQL Server анализирует значение json со специальным символом во вложенных свойствах
У меня есть значение json, как это и хочу запросить его с SQL Server:
declare @buffer nvarchar(max)={"request": {"user-agent": "Mozilla/5.0" } }
Я искал и обнаружил, что для специальных значений в свойствах json мы можем использовать ""
но он не будет работать для второго и вложенного уровней, таких как пользовательский агент здесь
select json_query(@buffer,'$.request."user-agent"')
Это работает, если значение json так:
select json_query(@buffer,'$."req-uest"')
но не на этом уровне:
declare @buffer nvarchar(max)='{"request": {"user-agent": "Mozilla/5.0" } }'
select json_query(@buffer,'$.request."user-agent"')
1 ответ
Решение
Поскольку вы возвращаете одно значение, а не массив или объект, вы должны использовать JSON_VALUE
вместо JSON_QUERY
:
select json_value(@buffer,'$.request."user-agent"')