我在表的 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
它不工作
关于我做错了什么的任何建议?