Update certain array elements of a json array in PostgreSQL 9.4

后端 未结 2 1571
野趣味
野趣味 2021-01-18 04:25

I have a table like this;

CREATE TABLE test (
  id BIGSERIAL PRIMARY KEY,
  data JSONB
);

INSERT INTO test(data) VALUES(\'[1,2,\"a\",4,\"8\",6]\'); -- id =          


        
2条回答
  •  离开以前
    2021-01-18 05:14

    You can do this from PostgreSQL 9.5 with jsonb_set:

    INSERT INTO test(data) VALUES('[1,2,"a",4,"8",6]');
    UPDATE test SET data = jsonb_set(data, '{2}','"b"', false) WHERE id = 1
    

    Try it out with a simple select:

    SELECT jsonb_set('[1,2,"a",4,"8",6]', '{2}','"b"', false)
    -- [1, 2, "b", 4, "8", 6]
    

    And if you want to update two fields you can do:

    SELECT jsonb_set(jsonb_set('[1,2,"a",4,"8",6]', '{0}','100', false), '{2}','"b"', false)
    -- [100, 2, "b", 4, "8", 6]
    

提交回复
热议问题