在 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
近期评论