我的数据库记录中有一个名为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无法识别的内置函数名称
答案 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)