postgresql - 在 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'”不存在
解决方案
您使用了错误的引号字符。而不是反引号或正向刻度或其他任何内容,您也应该使用单引号字符作为键名,因为您似乎正在使用格式字符串。即它应该是i->>'name'
。
PS SO 语法高亮显示正在发生一些可疑的事情......
推荐阅读
- python - python 3.7单行理解
- javascript - React - useState 仅影响最后一个属性值
- sql - 检查 postgres 表中列的唯一性
- c++ - 如何在内存中的数据缓冲区上使用常规 std::basic_istream::read、std::basic_ostream::write?
- linux - 如何使用 bash 同时运行多个可执行代码?
- java - 创建基于自定义生成器/迭代器方法的流
- virtual - Vmware 工作站 15 上的 RDP
- amazon-web-services - AWS Cloudformation:“Lambda 函数的权限无效”出了什么问题?
- python - Numpy 按中位数分组(没有 Pandas)
- excel - 如何计算同一客户购买的重复产品数量