UNNEST Array mit jsonb_array_elements()
, sortieren ihre Elemente und aggregieren sie mit jsonb_agg()
:
with the_data(val) as (values ('[3,6,78,1]'::jsonb))
select jsonb_agg(value) as val
from (
select value
from the_data, jsonb_array_elements(val)
order by value
) s;
val
---------------
[1, 3, 6, 78]
(1 row)
Sie die Abfrage in einer benutzerdefinierten Funktion verwenden können, die in komplizierteren Abfragen nützlich sein wird:
create or replace function jsonb_sort_array(val jsonb)
returns jsonb language sql as $$
select jsonb_agg(value)
from (
select value
from jsonb_array_elements(val)
order by value
) s
$$;
with the_data(val) as (values ('[3,6,78,1]'::jsonb))
select jsonb_sort_array(val) as val
from the_data;
val
---------------
[1, 3, 6, 78]
(1 row)