Postgres JSON Array data processing



有一个表"json_test"并插入以下记录:

create table json_test ( v json);
insert into json_test values ('{"facilityId": ["20","30","40","50","51"]}')
SELECT trim(json_array_elements_text(v->'facilityId') ) from json_test 

上面的选择将设施 ID 列为单独的行。

我需要 Postgres 函数中的相同行才能将记录插入到另一个表中。我编写了以下代码来返回i .选中时v_status的输出为 (20,,,,,,,,,,,,) 。我需要得到20,但我无法得到。

for i in SELECT json_array_elements_text(v->'facilityId') from json_test
loop
v_status:=  i;
end loop;

您尚未在问题中指定整个函数定义。假设你有 DDL:

CREATE TABLE json_test(
  id SERIAL PRIMARY KEY,
  v JSON
);
INSERT INTO json_test(v) VALUES
  ('{"facilityId": ["20","30","40","50","51"]}'::JSON);

您可以查看完整的 PL/pgSQL 指南作为参考,但您的函数可能定义如下:

CREATE OR REPLACE FUNCTION get_facility_ids(rid INTEGER)
  RETURNS SETOF INTEGER AS $$
DECLARE
  t TEXT;
BEGIN
  FOR t IN SELECT json_array_elements_text(v->'facilityId')
    FROM json_test WHERE id = rid
  LOOP
    RETURN NEXT t;
  END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT get_facility_ids(1) AS facultyId;

仅供您参考,您可以从SELECT语句中INSERT记录。查看文档。

相关内容

  • 没有找到相关文章