首页 > 数据库 >MySQL中JSON使用

MySQL中JSON使用

时间:2022-08-30 11:25:44浏览次数:51  
标签:COMMENT stat MySQL json JSON 使用 amt crm

  • 在使用数据库存储数据时,经常会用到json方式;比如产品的各种属性,这时候又不能确定每一样产品有多少属性,因此直接存json可以避免扩展数据库字段,使之更为灵活.
  • MySQL自5.7之后开始支持json类型.

1.JSON_EXTRACT提取json中字段
2.JSON_OBJECTAGG键值对方式组装成json返回,列表需要配合GROUP BY使用

一.直接存json,JSON_EXTRACT提取

CREATE TABLE `mo_stat_order`  (
  `stat_id` bigint(20) UNSIGNED NOT NULL COMMENT '统计ID',
  `stat_typ` tinyint(3) UNSIGNED NOT NULL COMMENT '统计类型',
  `stat_date` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '周期开始日',
  `stat_corp` bigint(20) UNSIGNED DEFAULT NULL COMMENT '企业用户ID',
  `stat_user` bigint(20) UNSIGNED DEFAULT NULL COMMENT '用户ID',
  `stat_data` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '统计的数据json格式',
  PRIMARY KEY (`stat_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单统计表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of mo_stat_order
-- ----------------------------
INSERT INTO `mo_stat_order` VALUES (21325055773984, 11, '2022', 16168574354689, 0, '{\"crm_cnt\":1,\"crm_amt\":500,\"bank_cnt\":1,\"bank_amt\":5000,\"loan_cnt\":2,\"loan_amt\":56000,\"fee_cnt\":1,\"fee_amt\":50000}');


# 查询:使用JSON_EXTRACT提取
SELECT
stat_id,stat_typ,stat_date,stat_user,stat_data,
JSON_EXTRACT(stat_data,'$.crm_cnt') crm_cnt,
JSON_EXTRACT(stat_data,'$.crm_amt') crm_amt
FROM mo_stat_order

二.JSON_OBJECTAGG使用

  • 该函数主要是对以键值对方式存数据,然后以json方式返回数据,只会返回一条数据,因此列表需要使用分组的方式
  • 如图:
SELECT stat_typ,JSON_OBJECTAGG(stat_key,stat_val) stat_data FROM mo_stat_orders GROUP BY stat_typ

标签:COMMENT,stat,MySQL,json,JSON,使用,amt,crm
From: https://www.cnblogs.com/liuyangjun/p/16638630.html

相关文章

  • 阅读《计算机图形学编程(使用OpenGL和C++)》11 - 加载外部obj模型
    复杂的3D模型可以借助建模工具生成,这种工具能够在3D空间中构建任意形状并自动生成顶点、纹理坐标、顶点法向量等。模型生成后可导出成obj文件格式,这种格式有很多,OBJ文件很......
  • MySQL提取字符串中的数字
    1--方法12selectreplace(reverse(FORMAT(reverse('国械注准20173463309'),0)),',','');34--方法25CREATEFUNCTIONget_number(paramvarchar(50))......
  • harbor 使用操作
    1.尝试登陆harborhttp://192.168.30.107:5012/2.命令行登陆 [root@k8s-master01~]#dockerlogin192.168.30.107:5012Username:adminPassword:Errorresponsefrom......
  • vue3+vuex 的 actions 的 使用
    <template><divclass="app">姓名:{{$store.state.nameVuex}}<button@click="btn">基本方法:修改名字</button><br/><button@click="btn1">传递值......
  • Mysql Count的区别
    1.count(1)和count(*)执行计划从执行计划来看count(1)和count()的效果是一样的。当表的数据量大些时(1W以上),对表作分析之后,使用count(1)比使用count()用时多。当......
  • VUE 使用中的知识点记录
    父子组件的调用子组件调用父组件的方法(或数据)1this.$parent.refreshQueryDate();其中refreshQueryDate是父组件的方法,如果方法有参数,就可以通过调用方法去设置父组件......
  • 强大的可视化利器 Chrome Trace Viewer 使用详解
    Limboy强大的可视化利器ChromeTraceViewer使用详解2020-03-21最近研究了下Chrome自带的TraceViewer,发现功能还挺强大的,用来做PerformanceProfil......
  • CLion使用clang-format插件使代码自动格式化
    MacOs版本下载clang-format#下载clang-format插件brewinstallinstallclang-format配置externaltool不同方式下载的clang-format地址会有不同,可以用以下......
  • 集合相关api (常用,方便查阅使用)
    说明:此笔记针对常用的集合操作,注重实际开发,方便开发中常规查阅,故文档会不断更新,形成集合表单。1.List转SetSet<String>stringList=newHashSet<String>(Arrays.as......
  • MYSQL中的COLLATE是什么?
    在mysql中执行showcreatetable<tablename>指令,可以看到一张表的建表语句,example如下:CREATETABLE`table1`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENT,......