MYSQL 解析json数据,并且查询json数组筛选符合条件的日期

MySQL判断json数据中是否包含某个值

mysql根据json字段内容作为查询条件(包括json数组),检索数据


需求:查询条件满足label='完成'的记录。

Mysql数据库,字段格式示例截图:

字段数据格式:

[{"id": "end1668393057508", "label": "完成", "processor": [], "process_method": ""}]

实现SQL:

SELECT
*
FROM
p_work_order_info
WHERE
JSON_CONTAINS(JSON_EXTRACT(state, "$[0]"), '"完成"', '$.label') = 1

解析:

一. 通过函数方法JSON_EXTRACT(state, "$[0]")去解析数据格式[{"id": "end1668393057508", "label": "完成", "processor": [], "process_method": ""}]的array的json数组,取下标[0]的第一组匹配json数据。

二. 通过函数方法JSON_CONTAINS( <json数据对象> , '"完成"', '$.label'),匹配json中的关键字label并判断是否包含完成的字符串。