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和Oracle之间的误区
May 18 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
MySQL中varchar和char类型的区别
Nov 17 MySQL
浅谈MySQL中的六种日志
Mar 23 MySQL
MySQL数据库 任意ip连接方法
May 20 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
MySQL事务的隔离级别详情
Jul 15 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根据生日计算年龄的方法
2015/07/13 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
jquery isEmptyObject判断是否为空对象的函数
2011/02/14 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python创建进程fork用法
2015/06/04 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
python得到电脑的开机时间方法
2018/10/15 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
外包公司软件测试工程师
2014/11/01 面试题
乡下人家教学反思
2014/02/01 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server