首页 > 解决方案 > MySQL JSON_EXTRACT 在嵌套级别具有动态键名

问题描述

我有以下 JSON 对象,我想搜索 JSON 中存在的电子邮件“abc@yopmail.com”。

{
    "form_data": {
        "company": {
            "additional": {
                "cniu": {
                    "email": "abc@yopmail.com"
                }
            }
        },
        "location": {
            "additional": {
                "pdum": {
                    "email": "xyz@yopmail.com"
                }
            }
        }
    }
}

我在这里遇到的问题是,在嵌套级别的键名“cniu”是一个随机生成的字符串。我尝试了以下查询,但它不起作用。

SELECT * 
FROM table as a 
WHERE 1 
AND ( CASE WHEN JSON_VALID(a.data) THEN 
            JSON_EXTRACT(a.data,'$.company.additional.*.email') 
        ELSE null END) = 'abc@yopmail.com'


SELECT * 
FROM table as a 
WHERE 1 
AND ( CASE WHEN JSON_VALID(a.data) THEN 
        JSON_EXTRACT(a.data,'$.company.additional.$.*.email') 
    ELSE null END) = 'abc@yopmail.com'

标签: mysql

解决方案


推荐阅读