mysql 模糊查询表中存储json的字段

说明:mysql 5.7 及以上版本

对操作记录表格中操作对象进行模糊查询

1.创建带有 json字段的表

-- 创建表
CREATE TABLE opt_record(id INT PRIMARY KEY, opt_username VARCHAR(20) , modify_text longtext COMMENT '操作内容');

2.插入数据

-- 插入含有json数组的记录
INSERT INTO opt_record(id,opt_username,modify_text ) VALUES( 1, 'admin', JSON_ARRAY(1, "course", NULL, TRUE, CURTIME()));

-- 插入含有json对象的记录
INSERT INTO opt_record(id,opt_username,modify_text) VALUES( 2, 'admin', JSON_OBJECT("course", "维修保养课程", "currentTime", now()));

INSERT INTO opt_record(id,opt_username,modify_text) VALUES( 3, 'admin', '{"course":"数据结构课程", "currentTime":"2018-010-1 14:01:00"}');

3.查询数据

-- 查询记录内的值

SELECT  id,opt_username,JSON_EXTRACT(modify_text,'$.name')  FROM opt_record;
SELECT  id,opt_username,modify_text->'$.name'  FROM opt_record;

-- 查询key
SELECT id,opt_username,json_keys(modify_text) FROM opt_record

4.对操作记录进行模糊查询

SELECT id,opt_username,modify_text FROM opt_record
WHERE 
JSON_EXTRACT(opt_record.modify_text,'$.name') LIKE CONCAT('%',#{modify_text},'%')

参考链接:https://www.cnblogs.com/ooo0/p/9309277.html

猜你喜欢

转载自blog.csdn.net/qq_35275233/article/details/82916333