I came across this question on how to update nth element of array, but it has nested json values in it instead of a plain array of strings.
Here are some sample json values from jsonb column of the table.
{"pattern": {"values": ["foo", "edfgh"]}}
{"pattern": {"values": ["abc", "abdhi", "foo"]}}
{"pattern": {"values": ["these", "abcd", "para", "avil"]}}
We can select the nth element using
select data #> '{pattern, values, 0}' from table;
How can we loop through array and update foo
to bar
if it is present in that array?
Best Answer
You can use a query like the one below;
Details;
First you have to find records which have "foo" value in "values" array;
After that remove the value "foo" from the array;
Create a new array by concatenating your new value(s).
Replace new array with the old one.