拙网论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 218|回复: 0

mysql5.7之json格式与json_extract方法使用

[复制链接]

949

主题

1001

帖子

3736

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3736
发表于 2019-12-5 09:37:23 | 显示全部楼层 |阅读模式


本文链接:https://blog.csdn.net/moshowgame/article/details/81016482
数据初始化
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

    文章最后发布于: 2018-07-12 15:19:30
    mysql 查询json字段 json_extract (mysql 5.7及以上)
    阅读数 520

    找第一层:SELECT * FROM tourists WHERE json_data->'$.weixinOpenId' = '299485886686868'或者SELECT * FROM ...
    博文
    来自: weixin_34026276的博客



    beta_xiyan7个月前#3楼
    您好 请问一下,对于一整个字段就是一个list [{},{},{}] 这种没有key 的如何取list 中每一项的某一个key,怎么操作呢

    DaisyDzZ10个月前#2楼
    {
        "CA_INVEST": {
            "formId": "12",
            "values":  [
                {
                    "id": "1.1.1",
                    "code": "Q1a",
                    "value": "child"
                },
                {
                    "id": "1.1.2",
                    "code": "Q1b",
                    "value": "2017-12-07T16:00:00.000+0000"
                },
                {
                    "id": "1.1.3",
                    "code": "Q1c",
                    "value": "[1,1]"
                }
              ],
            "dataMap": {
                "58": "宝宝妈",
                "59": "4",
                "61": "筛查工作站",
                "62": "筛查医生"
             }
         }
    }
    请教一下像上面那样,要获取dataMap里面的“58”的值,怎么写啊。。。我试了好久都报错,只好麻烦帮忙了感谢!
    ————————————————
    版权声明:本文为CSDN博主「Moshow郑锴」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/moshowgame/article/details/81016482

  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|抱朴守拙BBS

    GMT+8, 2025-5-25 23:21 , Processed in 0.187302 second(s), 18 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表