在 postgres 中访问 json 对象会抛出错误
Accessing jsonb object in postgress throws error
我有一个名为 "junaid" 的 table,它有一个类型为 "jsonb" 的列 "connections"。
create table junaid (
connection jsonb
}
"connections" 列中的值为对象数组。
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;
当我 运行 存储过程时,我得到这个错误:
column "’name’" does not exist
您使用了错误的引号字符。除了反引号或正向引号或其他任何东西,您也应该使用 单引号字符 作为键名,因为您似乎正在使用格式字符串。 IE。应该是 i->>'name'
.
P.S。 SO 语法高亮显示有些可疑的事情正在发生...
我有一个名为 "junaid" 的 table,它有一个类型为 "jsonb" 的列 "connections"。
create table junaid (
connection jsonb
}
"connections" 列中的值为对象数组。
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;
当我 运行 存储过程时,我得到这个错误:
column "’name’" does not exist
您使用了错误的引号字符。除了反引号或正向引号或其他任何东西,您也应该使用 单引号字符 作为键名,因为您似乎正在使用格式字符串。 IE。应该是 i->>'name'
.
P.S。 SO 语法高亮显示有些可疑的事情正在发生...