我在表格的SQL字段中具有以下JSON:
{
"type": "info",
"date": "2019/11/12 14:28:51",
"state": {
"6ee8587f-3b8c-4e5c-89a9-9f04752607f0": {
"state": "open",
"color": "#0000ff"
}
},
...
}
我使用以下查询在MS SQL中:
SELECT
JSON_VALUE(json_data, '$.type') AS msg_type
,JSON_VALUE(json_data, '$."date"') AS event_date
,JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0".state') AS json_state
,JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0".color') AS json_color
FROM
[dbo].[tbl_json_dump]
要获取日期(保留字),我必须将字段名称输入为$。“ date”
我似乎无法获取状态或颜色字段的数据,我认为它与嵌套在“ 6ee8587f-3b8c-4e5c-89a9-9f04752607f0”下有关,因为当我查询时:
JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0"') AS json_state
我把东西拿回来-
{"state":"open","color":"#0000ff"}
但是使用
JSON_QUERY(json_data, '$.state."6ee8587f-3b8c-4e5c-89a9-9f04752607f0".state') AS json_state
它不起作用
关于我在做什么错的任何建议吗?
只需替换为即可JSON_QUERY
,JSON_VALUE
因为您有兴趣获取价值。
JSON_QUERY
应该返回一个JSON片段,并设计用于对象和数组,而不是值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句