在 MySQL 5.7 中,如何在 json 字段上查询同一层级结构中的多个相同字段的值?
1、在 json 字段中的值如下所示。需要查询的字段:$.current.sections.announcement-bar.blocks.*.settings.text。其中 * 所对应的字段 key 是未知的。如图1
{
"current": {
"sections": {
"announcement-bar": {
"type": "announcement-bar",
"blocks": {
"announcement-bar-0": {
"type": "announcement",
"disabled": false,
"settings": {
"link": "/",
"text": "❤Free Shipping Over $100.0❤",
"image": null,
"text_color": "#ffffff",
"mobile_text": "",
"mobile_image": null,
"background_color": "#000000"
}
},
"6oaZmAscmONct-2pLAp5O": {
"type": "announcement",
"disabled": false,
"settings": {
"link": "/",
"text": "<p>❤Free Shipping Over $100.0❤ 1</p>",
"image": null,
"text_color": "#ffffff",
"mobile_text": "",
"mobile_image": null,
"background_color": "#000000"
}
},
"JrFCMGW-EBnVZQ3sQT-WP": {
"type": "announcement",
"disabled": false,
"settings": {
"link": "/",
"text": "<p>❤Free Shipping Over $100.0❤ 2</p>",
"image": null,
"text_color": "#ffffff",
"mobile_text": "",
"mobile_image": null,
"background_color": "#000000"
}
}
},
"disabled": false,
"settings": {
"sticky": false,
"homepage_only": false
},
"block_order": [
"announcement-bar-0",
"6oaZmAscmONct-2pLAp5O",
"JrFCMGW-EBnVZQ3sQT-WP"
]
}
},
"radius__image": 5,
"radius__button": 6
}
}
2、最后整理的 SQL 如下,查询结果为数组,如果不存在,则为 NULL。如图2
SELECT JSON_EXTRACT( `schema`, '$.current.sections."announcement-bar".blocks.*.settings.text' ) FROM `theme_asset2` WHERE `theme_id` = '9a1ce422-a2cc-4559-9c9b-2edd1c50db87' AND `asset_key` = 'config/settings_data.json'
["❤Free Shipping Over $100.0❤", "<p>❤Free Shipping Over $100.0❤ 1</p>", "<p>❤Free Shipping Over $100.0❤ 2</p>"]
3、announcement-bar 需要加上双引号,否则会报错:Invalid JSON path expression. The error is around character position 35.。如图3



近期评论