小编Old*_*ool的帖子

从表中获取 JSON 列包含特定值的所有行

我正在努力从我的 PostgreSQL 数据库中的 JSON 列中获取数据。在我们的users表中,我们有一known_ips列,它是一个 JSON 列,保存给定用户已知的 IP 地址的平面数组,如下所示:

# select email, known_ips from users limit 3;
       email       |          known_ips                                     
-------------------+-------------------------------
 user1@example.com | ["192.168.1.1","192.168.1.2"]
 user2@example.com | ["192.168.1.3"]
 user3@example.com | ["192.168.1.2"]
(3 rows)
Run Code Online (Sandbox Code Playgroud)

我想要做的是从其列中的一组 IP 地址(在本例中为 192.168.1.1 或 192.168.1.2)中选择具有 IP 地址的所有用户known_ips。因此,在这种情况下,user1 和 user3 的 IP 地址为 .1 或 .2,因此我希望返回它们,而不是 user2,因为我不是在寻找 .3 地址。

我尝试了以下查询,但都无济于事:

  • database=# select email, ip from users, json_array_elements(known_ips) as ip where ip in("192.168.1.1","192.168.1.2");
    ERROR:  column "192.168.1.1" does not exist
    LINE 1: ... json_array_elements(known_ips) …
    Run Code Online (Sandbox Code Playgroud)

postgresql syntax json

6
推荐指数
1
解决办法
5283
查看次数

标签 统计

json ×1

postgresql ×1

syntax ×1