当前位置: 首页 > 知识库问答 >
问题:

操作符不存在-Postgres&JSON选择查询

令狐钧
2023-03-14
{
    "id": "d57929b35216",
    "base" : {"legalName" : "SAPI S.P.A."}, 
    "name": "SAPI S.P.A.", 
}
CREATE TABLE public.ita_public
(
    id integer NOT NULL DEFAULT nextval('ita_data_id_seq'::regclass),
    info jsonb NOT NULL,
    CONSTRAINT ita_data_pkey PRIMARY KEY (id)
)
CREATE TABLE public.ita_sn_private
(
    id integer NOT NULL DEFAULT nextval('ita_sn_private_id_seq'::regclass),
    supplier_name character varying COLLATE pg_catalog."default",
    supplier_streetadd character varying COLLATE pg_catalog."default",
    CONSTRAINT ita_sn_private_pkey PRIMARY KEY (id)
)

选择查询打印三列,连接供应商名称和嵌套名称,并搜索名称:

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.'

我得到了错误:

错误:运算符不存在:

SELECT
info::json->'base'->'legalName'
FROM
ita_public
WHERE info::json->>'name' = 'SAPI S.P.A.'

很好用。

有人可以协助JOIN语句吗?我不知道如何将两者等同起来。

共有1个答案

管杜吟
2023-03-14

联接条件是原因:

on priv.supplier_name = pub.info::json->'name'

->返回JSON对象,而不是字符串。您需要在那里使用->>

on priv.supplier_name = pub.info::json->>'name'

与在WHERE子句中使用的方法相同

 类似资料:
  • 下面这个决策树可以帮助你找到需要的操作符。 决策树 我想要创建一个 Observable 产生特定的一个元素:just 经过一段延时:timer 从一个序列拉取元素:from 重复的产生某一个元素:repeatElement 存在自定义逻辑:create 每次订阅时产生:deferred 每隔一段时间,发出一个元素:interval 在一段延时后:timer 一个空序列,只有一个完成事件:empt

  • 问题内容: 我认为我要沿着这条路走正确的路…请忍受,因为我的SQL并不是最出色的 我试图查询数据库以从一个表中选择所有单元格中某些单元格不存在的所有内容。那没有多大意义,但我希望这段代码会 因此,基本上我有一张桌子,上面列出了员工及其详细信息。然后是另一个表,其中包含一些其他详细信息,包括其名称。在eotm_dyn表中没有名称的地方,这意味着它们没有条目,我想确切地知道它们是谁,或者换句话说,确切

  • 我有一个JSONB列,其中包含字符串数组,例如: 我想写jOOQ等价物:

  • 一条指令可以有零或多个操作数-指令操作的数据。零操作数的一个例子是NOP(no operation)。操作数可以在下面的位置: 位于指令本身(立即数) 位于寄存器(EAX, EBX, ECX, EDX, ESI, EDI, ESP, 或者EBP,如果是32位操作数;AX, BX, CX, DX, SI, DI, SP, 或者BP,如果是16位操作数;AH, AL, BH, BL, CH, CL,

  • 如何在postgres中选择行号。 我试过这个: 并得到这个错误: 我检查了以下页面:如何在PostgreSQL查询中显示行号? 这是我的问题: 这是错误: 错误:“over”行1处或附近出现语法错误:选择row\u number()over(按cgcode\u odc\u mapping\u id排序)作为

  • 我有一个名为TEST的表,列名为col1、col2、col3、col4。。。。。。。。。。所以,从信息模式来看。列我将获得有关此表对象的详细信息。 现在,我想通过从信息_模式中提供列名称,从测试表中构建一个select查询。柱。像这样,从information_schema中选择column_name。表_name='TEST'中的列。这会回来的 col1 col2 col3 我想在selectq