mysql 5.7+版本支持json類(lèi)型字段,提供了 JSON_SET等方法操作json屬性,實(shí)踐如下:
- 并非一定得是json類(lèi)型才可以使用5.7特性函數(shù)進(jìn)行json查詢(xún),longtext、varchar都可以;
- 使用longtext或者json類(lèi)型時(shí),navicat查詢(xún)時(shí),無(wú)法展現(xiàn)這些字段需要添加JSON_UNQUOTE或者使用->>
//只能查出ID列
SELECT id, (task_params),task_params->'$.aa' FROM ext_task ;
//可以查出三列結(jié)果
SELECT id, JSON_UNQUOTE(task_params),task_params->>'$.aa' FROM ext_task ;
- 采用JSON_SET等方法修改屬性值時(shí),如果存放的為數(shù)組,需要使用JSON_ARRAY生成,否則存儲(chǔ)的為字符串,JSON_OBJECT類(lèi)似
//正確方式
UPDATE ext_task SET task_params = JSON_SET(task_params, '$.aa', JSON_ARRAY(' Mysql', 'Database')) WHERE id = 1;
//錯(cuò)誤方式
UPDATE ext_task SET task_params = JSON_SET(task_params, '$.aa', '[ "Mysql", "Database"]' WHERE id = 1;
詳情請(qǐng)參閱:官方文檔網(wǎng)址