sql - 使用 json_extract 查找 JSON 数组中的所有对象

标签 sql sqlite sqlite-json1

如何使用 json_extract 遍历数组中的所有对象?如果您知道 key ,它就可以工作,但我想查看每个对象并找到匹配的对象。

$.features[0].properties.TMPRIV_ID

如何让它发挥作用?

$.features[*].properties.TMPRIV_ID

最佳答案

你用 MySQL 和 Sqlite 标记了这个,所以我要掷硬币并给出 Sqlite 答案。

基本上,您需要从 json_each() 行值函数中选择以迭代数组的每个元素,以及一个 where 子句来过滤您想要的内容(这是 json_extract() 开始发挥作用):

sqlite> SELECT value FROM
  json_each('[{"name":"cat","type":"mammal"},{"name":"parrot","type":"bird"},{"name":"dog","type":"mammal"}]')
  WHERE json_extract(value, '$.type') = 'mammal';
value                         
------------------------------
{"name":"cat","type":"mammal"}
{"name":"dog","type":"mammal"}

如果您希望结果作为 JSON 数组而不是一组行,请使用 json_group_array() 聚合函数:SELECT json_group_array(value) FROM ...

关于sql - 使用 json_extract 查找 JSON 数组中的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51640142/

相关文章:

SQL Server 基于列值的条件连接

sql - 为什么 `NOT IN` cte 不起作用但 `NOT IN` 子查询有效?

python - 如何使用 sqlalchemy 关系实现多个连接

java - OrmliteSqliteOpenHelper 出现 NoClassDefFound 错误

c# - SQLite 中如何将事务隔离级别设置为 ReadUncommitted?

c - 如何在 sqlite3 中将 json 数组索引设置为绑定(bind)参数?

sql - 如何在三个不同的表中并行插入数据

c++ - QSqlDatabase 是 exec 阻塞吗?

带有 JSON1 的 Ubuntu 16.04 上的 SQLite

sql - 在 sqlite 中使用 json1 查询 JSON 数组的多个值