Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
操作员不存在-Postgres&;JSON选择查询_Json_Postgresql_Jsonb - Fatal编程技术网

操作员不存在-Postgres&;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

我试图从包含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,
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'