Re: Help with PostgreSQL 9.4 to expand jsonb int array into table with row numbers

Поиск
Список
Период
Сортировка
От hari.fuchs@gmail.com
Тема Re: Help with PostgreSQL 9.4 to expand jsonb int array into table with row numbers
Дата
Msg-id 87ioivqsbz.fsf@hf.protecting.net
обсуждение исходный текст
Ответ на Help with PostgreSQL 9.4 to expand jsonb int array into table with row numbers  (Neil Tiffin <neilt@neiltiffin.com>)
Список pgsql-general
David G Johnston <david.g.johnston@gmail.com> writes:

> Neil Tiffin-3 wrote
>> Trying to wrap my head around postgresql 9.4 jsonb and would like some
>> help figuring out how to do the following.
>>
>> Given the following example jsonb:
>>
>>     ‘{“name1” : value1, “name2”    : value2, “name3” : [int1, int2, int3]
>> }’::jsonb AS table1.column1
>>
>> Wanted: Return the “name3” array only, as a table with a return signature
>> of
>>
>>     TABLE( var_name varchar, var_value int, var_row_num int)
>>
>> So the resulting data would look like this:
>>
>>     (‘name3’, int1, 1)
>>     (‘name3’, int2, 2)
>>     (‘name3’, int3, 3)
>>
>> Assume the array could be any length except zero and ‘name3’ is guaranteed
>> to exist.
>>
>> Also posted on stackoverflow:
>>
>> http://stackoverflow.com/questions/26691725/postgresql-9-4-expand-jsonb-int-array-into-table-with-row-numbers
>
> Not syntax checked but...
>
> SELECT 'name3', int_text::integer AS int, int_ord
> FROM ( VALUES (...) ) src (column1)
> LATERAL ROWS FROM(
> json_array_elements(column1->'name3')
> ) WITH ORDINALITY jae (int_text, int_ord)
>
> Both "WITH ORDINALITY" and "jsonb" are introduced in 9.4; it is possible to
> make this work in all supported versions of PostgreSQL through the liberal
> use of CTE (WITH) as possibly the generate_series() function.

I think this can just be written as

SELECT 'name3' AS var_name,
       json_array_elements(column1->'name3') AS var_value,
       row_number() OVER () AS var_row_num
FROM table1

В списке pgsql-general по дате отправления:

Предыдущее
От: David G Johnston
Дата:
Сообщение: Re: Help with PostgreSQL 9.4 to expand jsonb int array into table with row numbers
Следующее
От: Moshe Jacobson
Дата:
Сообщение: Re: STABLE vs. IMMUTABLE w.r.t. indexes