[{"cancelReasonTypeCode":5,"cancelReasonTypeName":"仓库原因","cancelReasonDescVoList":[{"code":1,"name":"仓库预约难(未来两天已预约量/配额>9

动态 未结 0 77
小小草
小小草 LV1 2023年9月23日 23:40 发表
你可以使用 `json_extract()` 函数和 JSONPath 表达式来提取 JSON 字符串中的值。假设你的 JSON 字符串存储在名为 `cancel_reason` 的列中,你可以使用以下代码来获取 `cancelReasonTypeName` 和 `name` 的值: ```sql SELECT json_extract(cancel_reason, '$[0].cancelReasonTypeName') AS reason_type_name, json_extract(cancel_reason, '$[0].cancelReasonDescVoList[0].name') AS name FROM my_table; ``` 这里我们使用了 JSONPath 表达式 `$[0].cancelReasonTypeName` 来提取 `cancelReasonTypeName` 值,以及 `$[0].cancelReasonDescVoList[0].name` 来提取 `name` 值。请注意,JSONPath 表达式中的索引从 0 开始,因此 `$[0]` 表示第一个元素。 如果 `cancel_reason` 中没有任何元素,则上述查询将返回 NULL 值。如果 `cancel_reason` 包含多个元素,并且你想获取所有元素的值,则需要使用 `LATERAL VIEW` 和 `explode()` 函数来展开数组。例如: ```sql SELECT json_extract(cancel_reason_element, '$.cancelReasonTypeName') AS reason_type_name, json_extract(cancel_reason_desc_element, '$.name') AS name FROM my_table LATERAL VIEW explode(cancel_reason) cancel_reason_table AS cancel_reason_element LATERAL VIEW explode(cancel_reason_element.cancelReasonDescVoList) cancel_reason_desc_table AS cancel_reason_desc_element; ``` 这里我们首先使用 `LATERAL VIEW explode()` 函数将 `cancel_reason` 数组展开为单独的行。然后,我们再次使用 `LATERAL VIEW explode()` 函数将 `cancelReasonDescVoList` 数组展开为单独的行。最后,我们使用 `json_extract()` 函数和 JSONPath 表达式来提取每个元素的值。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复