htl258_Tony 2023-12-13 01:07 采纳率: 100%
浏览 9
已结题

mysql在json字段类型中取数


{
    "fldAMdMkhNHoR": {
        "id": "fldAMdMkhNHoR",
        "name": "组别",
        "type": 3,
        "property": {
            "options": [{
                "id": "opt7EnQsE20Rq",
                "name": "组别",
                "color": 0
            }, {
                "id": "optsjTJfqyk8Y",
                "name": "机械1组",
                "color": 1
            }, {
                "id": "optLywx601VRq",
                "name": "机械2组",
                "color": 2
            }, {
                "id": "optYK6mt6ItSD",
                "name": "机械3组",
                "color": 3
            }, {
                "id": "optpkPIqIpRja",
                "name": "机械4组",
                "color": 4
            }, {
                "id": "optTgpBavHdYx",
                "name": "电控1组",
                "color": 5
            }, {
                "id": "optmUReOc3gfD",
                "name": "电控2组",
                "color": 6
            }, {
                "id": "optk8RhB4eGYp",
                "name": "项目组",
                "color": 7
            }, {
                "id": "optOhWXvQBndR",
                "name": "电控3组",
                "color": 8
            }]
        }
    },
    "fldHhivb42f04": {
        "id": "fldHhivb42f04",
        "name": "待料工时",
        "type": 2,
        "property": {
            "precision": 1,
            "symbolAlign": 2
        }
    },
    "fldM3ttjCjaiE": {
        "id": "fldM3ttjCjaiE",
        "name": "备注",
        "type": 1,
        "property": null
    },
    "fldODFwocO5mW": {
        "id": "fldODFwocO5mW",
        "name": "实到人数",
        "type": 2,
        "property": {
            "precision": 0,
            "symbolAlign": 2
        }
    },
    "fldRj5LQWuHQ2": {
        "id": "fldRj5LQWuHQ2",
        "name": "其它工时",
        "type": 16,
        "property": {
            "expression": "{fldgqxiaXLz2q}-{flda2hMpitMmm}",
            "formatting": {
                "symbol": "$",
                "precision": 0,
                "formatType": 2
            },
            "datasheetId": "dstfGWFSqBmjcnWMFZ"
        }
    },
    "fldSLq8sGINsn": {
        "id": "fldSLq8sGINsn",
        "name": "装配工时利用率",
        "type": 16,
        "property": {
            "expression": "if({fldgqxiaXLz2q}>0,ROUND({flda2hMpitMmm}/{fldgqxiaXLz2q}*100,1)&\"%\",\"\")",
            "formatting": {
                "symbol": "$",
                "precision": 1,
                "formatType": 18
            },
            "datasheetId": "dstfGWFSqBmjcnWMFZ"
        }
    },
    "flda2hMpitMmm": {
        "id": "flda2hMpitMmm",
        "name": "装配工时",
        "type": 16,
        "property": {
            "expression": "",
            "datasheetId": "dstfGWFSqBmjcnWMFZ"
        }
    },
    "fldacC6uiks4u": {
        "id": "fldacC6uiks4u",
        "name": "应到人数",
        "type": 2,
        "property": {
            "precision": 0,
            "symbolAlign": 2
        }
    },
    "fldfnPGNBHVyc": {
        "id": "fldfnPGNBHVyc",
        "name": "其它事项工时",
        "type": 16,
        "property": {
            "expression": "{fldRj5LQWuHQ2}-{fldHhivb42f04}",
            "formatting": {
                "symbol": "$",
                "precision": 0,
                "formatType": 2
            },
            "datasheetId": "dstfGWFSqBmjcnWMFZ"
        }
    },
    "fldgqxiaXLz2q": {
        "id": "fldgqxiaXLz2q",
        "name": "出勤工时",
        "type": 2,
        "property": {
            "precision": 1,
            "symbolAlign": 2
        }
    },
    "fldjKV2vPEKNs": {
        "id": "fldjKV2vPEKNs",
        "name": "时间",
        "type": 5,
        "property": {
            "autoFill": false,
            "dateFormat": 0,
            "timeFormat": 1,
            "includeTime": false
        }
    }
}

在以上中mysql表中一个字段的值,json类型,想实现如下的结果,语句要怎么写?

ID name
optsjTJfqyk8Y 机械1组
optLywx601VRq 机械2组
optYK6mt6ItSD 机械3组
optpkPIqIpRja 机械4组
optTgpBavHdYx 电控1组
optmUReOc3gfD 电控2组
optk8RhB4eGYp 项目组
optOhWXvQBndR 电控3组

展开全部

  • 写回答

2条回答 默认 最新

  • 爱编程的鱼 2023-12-13 01:13
    关注

    您可以使用MySQL中提供的JSON函数来实现取出json字段中的数据。具体的语句如下:

    SELECT JSON_EXTRACT(your_json_column, '$.*.property.options[*].id') AS ID, 
           JSON_EXTRACT(your_json_column, '$.*.property.options[*].name') AS name 
    FROM your_table;
    

    其中,your_json_column 是您的 JSON 类型的字段名,your_table 是您的表名。

    这个语句将会返回一个包含 ID 和 name 列的结果集,其中 ID 列包含 json 字段中的 id 属性,name 列包含 json 字段中的 name 属性。

    注意,这个语句中使用了 $.* 表示所有的 JSON 对象,[*].property.options[*] 表示所有的 options 数组元素,所以可以取出所有的 id 和 name 属性。如果您的 JSON 结构有所不同,需要根据实际情况进行修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月13日
  • 创建了问题 12月13日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部