Обсуждение: Cast json array to postgres array and preserve order of elements

Поиск
Список
Период
Сортировка

Cast json array to postgres array and preserve order of elements

От
otar shavadze
Дата:
When I want t to convert json array into postgres array, I do:

with t(j) as(
    select '{"my_arr":[3,1,2]}'::json
)
SELECT ARRAY(SELECT json_array_elements_text(j->'my_arr')) from t

It works like a charm and I never noticed any problem, but I'm asking here just to make sure,  order of elements will be preserved always? 
Is that guaranteed in above example, or not?

Thanks.

Re: Cast json array to postgres array and preserve order of elements

От
Andrew Dunstan
Дата:
On 5/10/20 8:21 AM, otar shavadze wrote:
> When I want t to convert json array into postgres array, I do:
>
>     with t(j) as(
>         select '{"my_arr":[3,1,2]}'::json
>     )
>     SELECT ARRAY(SELECT json_array_elements_text(j->'my_arr')) from t
>
>
> It works like a charm and I never noticed any problem, but I'm asking
> here just to make sure,  order of elements will be preserved always? 
> Is that guaranteed in above example, or not?
>
>


yes. The order is significant and the elements are produced in array order.


cheers


andrew


-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: Cast json array to postgres array and preserve order of elements

От
otar shavadze
Дата:
Great, thanks very much Andrew!   

On Sun, May 10, 2020 at 7:08 PM Andrew Dunstan <andrew.dunstan@2ndquadrant.com> wrote:

On 5/10/20 8:21 AM, otar shavadze wrote:
> When I want t to convert json array into postgres array, I do:
>
>     with t(j) as(
>         select '{"my_arr":[3,1,2]}'::json
>     )
>     SELECT ARRAY(SELECT json_array_elements_text(j->'my_arr')) from t
>
>
> It works like a charm and I never noticed any problem, but I'm asking
> here just to make sure,  order of elements will be preserved always? 
> Is that guaranteed in above example, or not?
>
>


yes. The order is significant and the elements are produced in array order.


cheers


andrew


--
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services