操作员不存在-Postgres&;JSON选择查询
我试图从包含JSONB数据的表中检索和连接数据,其中JSON行的格式为:操作员不存在-Postgres&;JSON选择查询,json,postgresql,jsonb,Json,Postgresql,Jsonb,我试图从包含JSONB数据的表中检索和连接数据,其中JSON行的格式为: { "id": "d57929b35216", "base" : {"legalName" : "SAPI S.P.A."}, "name": "SAPI S.P.A.", } 表ita_public 表ita_sn_private 选择“查询”打印三列,连接供应商名称和嵌套名称,并搜索名称: SELECT priv.supplier_name, priv.supplier_streetadd
{
"id": "d57929b35216",
"base" : {"legalName" : "SAPI S.P.A."},
"name": "SAPI S.P.A.",
}
表ita_public
表ita_sn_private
选择“查询”打印三列,连接供应商名称和嵌套名称,并搜索名称:
SELECT
priv.supplier_name,
priv.supplier_streetadd,
pub.info::json->'base'->'legalName'
FROM ita_sn_private as priv
JOIN ita_public as pub ON (priv.supplier_name = pub.info::json->'name')
WHERE pub.info::json->>'name' = 'SAPI S.P.A.'
我得到一个错误:
错误:运算符不存在:
character variating=json第7行:连接
ita_public as pub ON(priv.supplier_name=pub.info::js
提示:没有与给定名称和参数类型匹配的运算符。您可以
可能需要添加显式类型转换
(小帽子在“=”下面)
我试图简化查询以确保我的json路径正确:
SELECT
info::json->'base'->'legalName'
FROM
ita_public
WHERE info::json->>'name' = 'SAPI S.P.A.'
这很好用
有人能帮我处理JOIN语句吗?我不知道如何将两者等同起来。JOIN条件就是原因:
on priv.supplier_name = pub.info::json->'name'
->
返回一个JSON对象,而不是字符串。您需要在那里使用->
on priv.supplier_name = pub.info::json->>'name'
与您在WHERE
子句中所做的相同
on priv.supplier_name = pub.info::json->'name'
on priv.supplier_name = pub.info::json->>'name'