关于mysql中的json解析函数JSON_EXTRACT

作者:Deng_7788 时间:2024-01-23 18:29:41 

mysql json解析函数JSON_EXTRACT

MYSQl自带的解析函数JSON_EXTRACT,用JSON_EXTRACT函数解析出来的函数会包含双引号

例子

t_table表里面source字段是以json格式写的值为

{ "info" : { "color" : "白色", "inner_color" : "米色", "number" : "12345678", "registration_date" : "2012-11" },
"accessory" : [ "1", "4", "5", "6", "7", "8", "9", "10" ],
"remark" : "测试"}

查询color不去掉双引号,inner_color去掉双引号,remark去掉双引

select?
source->'$.info.color' ?as color,
replace(source->'$.info.inner_color','"','') ? as inner_color,
replace(source->'$.remark','"','') ? as remark
?from t_table

查询结果

colorinner_colorremark
“白色”米色测试

mysql5.7 json格式与json_extract方法

数据初始化

json_test表数据,id和jsonstr字段(类型json)

{
   "no": "7",
   "title": "运动方式",
   "content": [{
       "text": "您平时经常进行的运动及时间",
       "item1": [{
           "text": "慢跑 / 快走 / 走跑结合",
           "type": "select",
           "value": "selected"
       }, {
           "text": "上下楼梯 / 爬山",
           "type": "multselect",
           "value": "selected"
       }],
       "item2": [{
           "text": "慢跑222走跑结合",
           "type": "text",
           "value": "慢跑2"
       }, {
           "text": "上下楼梯 / 爬山2",
           "type": "number",
           "value": "33"
       }]
   }]
}

select语句

SELECT
? ? id,
? ? json_extract( t.jsonstr, '$.*' ),
? ? json_extract( t.jsonstr, '$.title' ) AS "title",
? ? json_extract( t.jsonstr, '$.content' ) AS "content" ,
? ? json_extract( t.jsonstr, '$**.text' ) AS "text" ,
? ? json_extract( t.jsonstr, '$.content[*].item1[*]' ) AS "item1"?
FROM
? ? json_test t;

返回结果解析

//json_extract( t.jsonstr, '$.*' )返回:
["7", "运动方式", [{"text": "您平时经常进行的运动及时间", "item1": [{"text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"}, {"text": "上下楼梯 / 爬山", "type": "multselect", "value": "selected"}], "item2": [{"text": "慢跑222走跑结合", "type": "text", "value": "慢跑2"}, {"text": "上下楼梯 / 爬山2", "type": "number", "value": "33"}]}]]
//json_extract( t.jsonstr, '$.title' ) AS "title"返回:
"运动方式"
//json_extract( t.jsonstr, '$.content' ) AS "content" 返回:
[{"text": "您平时经常进行的运动及时间", "item1": [{"text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"}, {"text": "上下楼梯 / 爬山", "type": "multselect", "value": "selected"}], "item2": [{"text": "慢跑222走跑结合", "type": "text", "value": "慢跑2"}, {"text": "上下楼梯 / 爬山2", "type": "number", "value": "33"}]}]
//json_extract( t.jsonstr, '$**.text' ) AS "text" 返回:
["您平时经常进行的运动及时间", "慢跑 / 快走 / 走跑结合", "上下楼梯 / 爬山", "慢跑222走跑结合", "上下楼梯 / 爬山2"]
//json_extract( t.jsonstr, '$.content[*].item1[*]' ) AS "item1" 返回:
[{"text": "慢跑 / 快走 / 走跑结合", "type": "select", "value": "selected"}, {"text": "上下楼梯 / 爬山", "type": "multselect", "value": "selected"}]

用法解析

‘$.*’返回全部json
‘$.title’返回key=”title”的数据
‘$**.text’返回所有最底层key=”text”的数据
‘$.content[*].item1[*]’返回key=content的list的key=item1的list的所有内容

官方文档:https://dev.mysql.com/doc/refman/5.7/en/json.html

来源:https://blog.csdn.net/Deng_7788/article/details/124711236

标签:mysql,json,JSON,EXTRACT
0
投稿

猜你喜欢

  • 浅谈Oracle数据库的建模与设计

    2010-07-20 12:55:00
  • python PaddleSpeech实现婴儿啼哭识别

    2023-08-22 22:25:31
  • BootStrop前端框架入门教程详解

    2024-04-29 13:46:10
  • 细节设计之美:扩大可操作区域

    2009-08-01 11:32:00
  • 模拟实现 Range 的 insertNode() 方法

    2010-11-30 21:39:00
  • 详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方法

    2023-02-13 22:24:24
  • Python自动发送和收取邮件的方法

    2023-10-09 17:58:56
  • 试了下Golang实现try catch的方法

    2023-07-21 20:49:59
  • three.js中文文档学习之创建场景

    2023-08-22 21:02:00
  • MySQL的查询计划中ken_len的值计算方法

    2024-01-24 13:32:49
  • python中二分查找法的实现方法

    2023-02-02 16:19:16
  • Python中操作各种多媒体,视频、音频到图片的代码详解

    2021-09-25 21:47:49
  • vue单页面在微信下只能分享落地页的解决方案

    2024-05-09 10:52:19
  • 多线程爬虫批量下载pcgame图片url 保存为xml的实现代码

    2021-04-12 15:06:27
  • python3实现简单飞机大战

    2022-11-11 02:27:18
  • python同步windows和linux文件

    2023-12-11 11:44:35
  • Python中的字典及其使用方法

    2022-03-22 13:31:49
  • Python3爬虫关于识别检验滑动验证码的实例

    2021-08-25 02:17:37
  • python实现的读取网页并分词功能示例

    2022-05-08 07:06:38
  • 基于golang channel实现的轻量级异步任务分发器示例代码

    2024-05-08 10:13:09
  • asp之家 网络编程 m.aspxhome.com