mysql全面解析json/数组


Posted in MySQL onJuly 07, 2022

mysql解析json数组

mysql在5.7开始支持json解析了 也可以解析数组哦!

直接上demo

 SELECT Substr(col, 2, Length(col) - 2), Length(col)
         FROM   (SELECT Json_extract(Json_extract(Json_extract(state, "$.tpl"),"$.items"
                            ), "$[0].url")
               AS col
        FROM   page
        ORDER  BY id DESC
        LIMIT  100) t;

JSON_EXTRACT可以解析sql , tpl就是你json的key值

如果是数组,用$[*].url  或者 $[0].url  获取全部的value 或者某个下标的url

下面这个demo可以直接复制到sql运行

 select JSON_EXTRACT(JSON_EXTRACT(JSON_EXTRACT('{"tpl":{"items":[{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FiZ0OtkhTZoD7fOtkp55SnuLGiKu.png?imageView2/2/w/750","id":1542348252537},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FlR1VDQWEzD406NosLFrJUez4g_X.png?imageView2/2/w/750","id":1542348263477},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FhMuYkWvnoMbv8I1dlQbm1KaX5Kn.png?imageView2/2/w/750","id":1542348269599},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FlgR4IUNElPbcgjN2re_9A8jX30v.png?imageView2/2/w/750","id":1542348276124},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FpXF8ETHxU8aqriiKbsYDjnu2Xd5.png?imageView2/2/w/750","id":1542348282561},{"type":"image","config":{"expandable":true,"linkAble":true},"url":"https://fs.esf.fangdd.net/test/FkUz5m7Jd6kE2slSyreDucozc3XH.png?imageView2/2/w/750","id":1542348288150,"link":"http://www.baidu.com"}],"bottomItems":[],"title":"demo2","description":"","wxLogo":"","bodyStyleInline":{},"bg":"","bgType":"","bottomStyleInline":{},"bottomBg":"","bottomBgType":"","uuid":"aaef8dfe-256a-4559-aec9-95d1fcdcf830","activeItemsName":"items","activeImgType":"","authInfo":{"role_list":[{"name":"test","access_key_list":[]},{"name":"审核人员","access_key_list":[]}],"city_list":[],"userId":3108779,"userName":"zhangyusheng","email":"zhangyusheng@xxx.com","mobile":"123123","trueName":"张昱升","isEmployee":true}}}', "$.tpl"), "$.items"), "$[0].url");

我们来分析一下

原始json为

{
    "tpl":{
        "items":[
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FiZ0OtkhTZoD7fOtkp55SnuLGiKu.png?imageView2/2/w/750",
                "id":1542348252537
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FlR1VDQWEzD406NosLFrJUez4g_X.png?imageView2/2/w/750",
                "id":1542348263477
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FhMuYkWvnoMbv8I1dlQbm1KaX5Kn.png?imageView2/2/w/750",
                "id":1542348269599
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FlgR4IUNElPbcgjN2re_9A8jX30v.png?imageView2/2/w/750",
                "id":1542348276124
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FpXF8ETHxU8aqriiKbsYDjnu2Xd5.png?imageView2/2/w/750",
                "id":1542348282561
            },
            {
                "type":"image",
                "config":{
                    "expandable":true,
                    "linkAble":true
                },
                "url":"https://fs.esf.fangdd.net/test/FkUz5m7Jd6kE2slSyreDucozc3XH.png?imageView2/2/w/750",
                "id":1542348288150,
                "link":"http://www.baidu.com"
            }
        ],
        "bottomItems":[
 
        ],
        "title":"demo2",
        "description":"",
        "wxLogo":"",
        "bodyStyleInline":{
 
        },
        "bg":"",
        "bgType":"",
        "bottomStyleInline":{
 
        },
        "bottomBg":"",
        "bottomBgType":"",
        "uuid":"aaef8dfe-256a-4559-aec9-95d1fcdcf830",
        "activeItemsName":"items",
        "activeImgType":"",
        "authInfo":{
            "role_list":[
                {
                    "name":"test",
                    "access_key_list":[
 
                    ]
                },
                {
                    "name":"审核人员",
                    "access_key_list":[
 
                    ]
                }
            ],
            "city_list":[
 
            ],
            "userId":3108779,
            "userName":"zhangyusheng",
            "email":"zhangyusheng@xxx.com",
            "mobile":"23123",
            "trueName":"张昱升",
            "isEmployee":true
        }
    }
}
  • $.tpl就是获取tpl这个键key
  • $[0].url就是获取[{url:1},{url:2}] 这个数组第一个对象的url值 也就是1

mysql json字符串解析成对应字段

字段名 :mobile ,内容:{"contactName":"段XX","contactJobTitle":"待确认","contactMobile":"131XXXXXXX"}。

解决方法:JSON_EXTRACT

执行SQL:

mysql全面解析json/数组

查询结果:

mysql全面解析json/数组

结果带引号,并不能真正使用。

解决方法:REPLACE

执行SQL:

mysql全面解析json/数组

查询结果:

mysql全面解析json/数组

问题解决。

sql语句:

SELECT
REPLACE (
JSON_EXTRACT (mobile, '$.contactName'),
'"',
''
) AS 'contactName',
REPLACE (
JSON_EXTRACT (mobile, '$.contactMobile'),
'"',
''
) AS 'contactMobile',
REPLACE (
JSON_EXTRACT (mobile, '$.contactJobTitle'),
'"',
''
) AS 'contactJobTitle'
FROM
cscw_client
WHERE
id = 'XXXXXXXXXXXXXXX'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。


Tags in this post...

MySQL 相关文章推荐
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
Mysql调整优化之四种分区方式以及组合分区
Apr 13 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
MySQL外键约束(Foreign Key)案例详解
Jun 28 #MySQL
MySQL主从切换的超详细步骤
Jun 28 #MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 #MySQL
MySQL导致索引失效的几种情况
Jun 25 #MySQL
Mysql中的触发器定义及语法介绍
Jun 25 #MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 #MySQL
You might like
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
php实现分页显示
2015/11/03 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
Django实现自定义404,500页面教程
2017/03/26 Python
python基于http下载视频或音频
2018/06/20 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
解决django FileFIELD的编码问题
2020/03/30 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
商务助理岗位职责
2013/11/13 职场文书
班级入场式解说词
2014/02/01 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis