mysql 5.7 json 使用备忘

mysql 5.7+版本支持json类型字段,提供了 JSON_SET等方法操作json属性,实践如下:

  • 并非一定得是json类型才可以使用5.7特性函数进行json查询,longtext、varchar都可以;
  • 使用longtext或者json类型时,navicat查询时,无法展现这些字段需要添加JSON_UNQUOTE或者使用->>
//只能查出ID列
SELECT id,  (task_params),task_params->'$.aa'  FROM ext_task   ;
//可以查出三列结果
SELECT id,  JSON_UNQUOTE(task_params),task_params->>'$.aa'  FROM ext_task   ;

  • 采用JSON_SET等方法修改属性值时,如果存放的为数组,需要使用JSON_ARRAY生成,否则存储的为字符串,JSON_OBJECT类似
//正确方式
UPDATE ext_task SET task_params = JSON_SET(task_params, '$.aa', JSON_ARRAY(' Mysql', 'Database'))  WHERE id = 1;
//错误方式
UPDATE ext_task SET task_params = JSON_SET(task_params, '$.aa', '[ "Mysql", "Database"]'  WHERE id = 1;

详情请参阅:官方文档网址

你可能感兴趣的:(mysql 5.7 json 使用备忘)