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索引篇之千万级数据实战测试
Apr 05 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
MySQL 全文索引使用指南
May 25 MySQL
MySQL GRANT用户授权的实现
Jun 18 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
MySQL创建定时任务
Jan 22 MySQL
MySQL多表查询机制
Mar 17 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 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
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
phalcon框架使用指南
2016/02/23 PHP
浅谈php处理后端&接口访问超时的解决方法
2016/10/29 PHP
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
JavaScript链式调用实例浅析
2018/12/19 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python入门篇之数字
2014/10/20 Python
Python中内建函数的简单用法说明
2016/05/05 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
英文自荐信常用句子
2014/03/26 职场文书