MySQL 通过这种字符串的 Path 描述帮助我们映射到对应的数据。和 JavaScript 中对象的操作比较类似,通过
.
获取下一级的属性,通过 []
获取数组元素。不一样的地方在于需要通过
$
表示本身,这个也比较好理解。另外就是可以使用 *
和 **
两个通配符,比如 .*
表示当前层级的所有成员的值,[*]
则表示当前数组中所有成员值。**
类似 LIKE 一样可以接前缀和后缀,比如 a**b
表示的是以 a 开头,b结尾的路径。json函数用法示例:
- 设值和提取值
UPDATE supervise_status_change_record sscr LEFT JOIN supervise_problem sp ON sscr.problem_id = sp.id LEFT JOIN supervise_responsible_department srd ON sp.department_id = srd.id SET sscr.content = JSON_SET( sscr.content, '$.整改单位', srd.`name` ) WHERE sscr.create_time > '2022-04-11 14:35:00' AND sscr.NAME = '整改反馈' AND JSON_EXTRACT( sscr.content, '$.整改单位' ) = "兰溪兰江街道"
- 数组长度
SELECT max( sp.create_time ), min( sp.create_time ) FROM supervise_problem sp WHERE JSON_LENGTH(sp.attachment) = 0 AND create_time >'20220802' AND create_time <'20220803';