【发布时间】:2019-06-13 02:22:09
【问题描述】:
在我的 MySQL 8.0 表中,我有一个 JSON ARRAY 列。它是一个 JSON 对象数组。我想根据对象中的键值对从每一行的数组中挑选一个对象。
示例行:
[{bool:false, number:0, value:'hello'},
{bool:true, number:1, value:'world'},
{bool:true, number:2, value:'foo'},
{bool:false, number:1, value:'bar'}]
我想要做的是获得“价值”WHERE bool=true, AND number=1。所以我想要一个在本例中返回“世界”的查询。
如果我可以获取 bool=true 和 number=1 的对象的索引,在本例中它会返回 '$[1]',这也是可行的。
我正在尝试对整个列运行查询,将新列设置为查询返回的值。 MySQL JSON 函数可以做到这一点吗?我查看了引用,但没有像我的示例那样在数组中包含对象。
编辑:如果我这样做了
SELECT JSON_SEARCH(column->"$[*]", 'all', '1');
SELECT JSON_SEARCH(names->"$[*]", 'all', 'true');
我分别获得了 number=1 和 bool=true 的对象的路径/索引。我想要这两个结果的重叠。
【问题讨论】: