1. 程式人生 > >mysql 模糊查詢表中儲存json的欄位

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