Как удалить дубликаты элементов из массива, который находится внутри столбца JSONB в PostgreSQL? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть столбец JSONB в PostgresSQL, как показано ниже, я хочу удалить дубликаты

 {
  "other": null,
  "values": [
    "REDUCE_STRESS",
    "LOSE_WEIGHT",
    "INCREASE_ACTIVITY",
    "EAT_HEALTHIER",
    "IMPROVE_SLEEP",
    "EAT_HEALTHIER",
    "INCREASE_ENERGY"
  ]
}

1 Ответ

1 голос
/ 21 апреля 2020

Самое простое - создать функцию:

create function remove_dupes(p_array jsonb) 
  returns jsonb
as
$$
select jsonb_agg(distinct e)
from jsonb_array_elements(p_array) as t(e);
$$
language sql;

Затем вы можете использовать это в выражении UPDATE:

update the_table
   set the_column = jsonb_set(the_column, '{values}', remove_dupes(the_column -> 'values'))
where ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...