首页 > 解决方案 > 在 postgress 中访问 jsonb 对象会引发错误

问题描述

我有一个名为“junaid”的表,其中有一列“connections”,其类型为“jsonb”。

create table junaid (
   connection jsonb
}  

“连接”列中的值是对象数组。

conections = [{"name":"abc", "age":123},{"name":"xyz", "age":222}]

我有一个存储过程来访问这些值。

CREATE OR REPLACE FUNCTION test() RETURNS INTEGER AS $$
DECLARE   
myconnection jsonb;
i jsonb;
BEGIN
    select connections into myconnection from junaid;


    FOR i IN SELECT * FROM jsonb_array_elements(myconnection)
    LOOP
        RAISE NOTICE 'output from space %', i->>’name’;
    END LOOP;
    return 0;
EXCEPTION WHEN others THEN
    return 1;
END;
$$ LANGUAGE plpgsql;

当我运行存储过程时,我收到此错误:

列“'name'”不存在

标签: postgresqlplpgsqljsonb

解决方案


您使用了错误的引号字符。而不是反引号或正向刻度或其他任何内容,您也应该使用单引号字符作为键名,因为您似乎正在使用格式字符串。即它应该是i->>'name'

PS SO 语法高亮显示正在发生一些可疑的事情......


推荐阅读