从 uknknown 数组键中提取 JSON

Posted

技术标签:

【中文标题】从 uknknown 数组键中提取 JSON【英文标题】:JSON extract from uknknown array key 【发布时间】:2018-03-06 01:02:02 【问题描述】:

我有一个结构 - 列访问者

["firstname":"john","lastname":"penn","firstname":"mickey","lastname":"smith","firstname":"darth","lastname":"vader"]

我想知道这个 json 中列出的所有这些人中是否有一个 john。

我的查询没有找到任何内容(未找到任何行)

SELECT conference_name FROM conference WHERE JSON_EXTRACT(visitors, "$[*].firstname") = 'john';

这是否可以仅使用 json_extract 而不是 json_search 来实现,因为它在大表中非常慢?

【问题讨论】:

“列表”从何而来? @SimonFranzen 已修复,更清楚。会议是表,访问者是所有访问者的 json 列。 "$[*].firstname" 更改为 "$.firstname" 。我还添加了一个答案。你能检查它是否有帮助 【参考方案1】:

就像docs中提到的:

mysql> SELECT c, JSON_EXTRACT(c, "$.firstname"), g
 > FROM jemp
 > WHERE JSON_EXTRACT(c, "$.firstname") = 'john';

或者你可以试试

SELECT conference_name FROM conference WHERE JSON_EXTRACT(visitors, "$.firstname") = 'john';

还是?

SELECT conference.conference_name FROM conference WHERE JSON_EXTRACT(conference.visitors, "$.firstname") = 'john';

【讨论】:

不起作用,仍然返回 0 行。正如您在我的案例中所看到的,有一个表作为***组,您的解决方案仅在每个键只有一个时才有效 - 只有一个 json 对象。我的情况实际上是一个数组中的多个相同的结构化对象 - $[object_number_inside_array].objectkey 好的哇,你是对的。 phhheew,在数组中搜索?你看过这个帖子***.com/questions/36346252/…

以上是关于从 uknknown 数组键中提取 JSON的主要内容,如果未能解决你的问题,请参考以下文章

从字典键中提取值 - 然后组合成一个对象

在一个查询中从多个主键中提取条目

如何从键中提取经度和经度?

从 WordPress REST API JSON 响应中提取图像 url

BigQuery 从 JSON 文件键中获取列

如何从PostgreSQL json中提取数组