In MySQL 5.7, how can I query the values of multiple same fields in the same hierarchy on the JSON field?
1. The values in the JSON field are as follows. The fields to query: $.current.sections.announcement-bar.blocks.*.settings.text. The field key corresponding to * is unknown. as shown in Figure 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": "❤Free Shipping Over $100.0❤ 1",
"image": null,
"text_color": "#ffffff",
"mobile_text": "",
"mobile_image": null,
"background_color": "#000000"
}
},
"JrFCMGW-EBnVZQ3sQT-WP": {
"type": "announcement",
"disabled": false,
"settings": {
"link": "/",
"text": "❤Free Shipping Over $100.0❤ 2",
"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. The final sql is as follows, the query result is an array, if it does not exist, it is null. as shown in Figure 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❤", "❤Free Shipping Over $100.0❤ 1", "❤Free Shipping Over $100.0❤ 2"]
3. Announcement-bar needs to add double quotation marks, otherwise an error will be reported: Invalid json path expression. The error is around character position 35. as shown in Figure 3


