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
notjson
(或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"}}';