Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql JSON中的Postgres搜索_Postgresql_Postgresql 9.5 - Fatal编程技术网

Postgresql JSON中的Postgres搜索

Postgresql JSON中的Postgres搜索,postgresql,postgresql-9.5,Postgresql,Postgresql 9.5,我的probe_表如下所示: id |我的元数据 probe列是JSON,包含以下内容: { "myProbe": { "someField": "20", "ip": "1.1.1.1", } } 我试图在所有列中搜索特定IP 我试过: SELECT * FROM probe_table WHERE probe @> '{"myProbe":{"ip": "1.1.1.1"}}'; 错误:运算符不存在:text@>未知 这是: SE

我的
probe_表
如下所示:

id |我的元数据

probe
列是JSON,包含以下内容:

{
  "myProbe": {
    "someField": "20",
    "ip": "1.1.1.1",
  }
} 
我试图在所有
列中搜索特定IP

我试过:

SELECT * 
      FROM probe_table
      WHERE probe @> '{"myProbe":{"ip": "1.1.1.1"}}';
错误:运算符不存在:text@>未知

这是:

SELECT * FROM probe_table WHERE probe->myProbe->>ip = '1.1.1.1'
错误:“myProbe”列不存在


知道我遗漏了什么吗?

您需要对
->
->
运算符的参数使用单引号。消息“operator not exist:text@>unknown”表示您的列的类型为
text
not
json
(或
jsonb
),因此您需要强制转换它:

SELECT * 
FROM probe_table 
WHERE probe::jsonb -> 'myProbe' ->> 'ip' = '1.1.1.1'


@一匹没有名字的马修正了这个问题,错误是一样的。
SELECT * 
FROM probe_table
WHERE probe::jsonb @> '{"myProbe":{"ip": "1.1.1.1"}}';