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;

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容