查询从MYsql中的整个json对象获取特定对象

时间:2018-05-10 06:02:36

标签: javascript mysql sql database

我的数据库记录中有一个名为appjson的复杂json对象字段

{
"id":"123",
"appDetails" : "",
"official" : {
    "comments" : {
        "internalcomments" : "successfull",
        "supportingDocs" : [{}
        ]
    }
}
}

我可以使用直接查询来获取整个JSON。

但我不想要整个复杂的json,我只需要来自那个官方的具体对象

对于我在下面尝试查询的整个官方对象,它不起作用

SELECT appjson.official from appdata WHERE id = '123'

类似于我在下面使用的内部评论

SELECT appjson.official.internalcomments from appdata WHERE id = '123'

但是我无法获取..在MYSQL中有没有其他选项/方式从json获取特定对象。

非常感谢任何帮助。谢谢

我尝试使用JSON_EXTRACT

从appdata WHERE id =' 123'

中选择JSON_EXTRACT(appjson,' $。"官方"')

但没有运气 它给出了JSON_EXTRACT无法识别的内置函数名称

1 个答案:

答案 0 :(得分:0)

以下是获得所需输出的步骤。

mysql> CREATE TABLE t1 (id int, jdoc JSON);
Query OK, 0 rows affected (0.35 sec)

uery OK, 0 rows affected (0.35 sec)

mysql> insert into t1 values(1,'{
    '> "id":"123",
    '> "appDetails" : "",
    '> "official" : {
    '>     "comments" : {
    '>         "internalcomments" : "successfull",
    '>         "supportingDocs" : [{}
    '>         ]
    '>     }
    '> }
    '> }');
Query OK, 1 row affected (0.06 sec)

mysql> SELECT JSON_EXTRACT(jdoc, '$.official') as official from t1 where JSON_EXTRACT(jdoc, '$.id') = '123';
+---------------------------------------------------------------------------+
| official                                                                  |
+---------------------------------------------------------------------------+
| {"comments": {"supportingDocs": [{}], "internalcomments": "successfull"}} |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)