Search code examples
sqlpostgresqljsonb

PSQL return only value from jsonb_each_text


I'm calling jsonb_each_text and it is working exactly as I expect, returning me this:

select jsonb_each_text('{"text": "this is text", "text2": "this is text2", "f_id": "21"}') as line;
          line           
-------------------------
 (f_id,21)
 (text,"this is text")
 (text2,"this is text2")
(3 rows)

I know that I can easily return just the keys by doing this:

select jsonb_object_keys('{"text": "this is text", "text2": "this is text2", "f_id": "21"}') as line;
 line  
-------
 f_id
 text
 text2
(3 rows)

Is there a way I can only return the values?

So for example, I'd like this as my output:

          line           
-------------------------
21
"this is text"
"this is text2"

The values don't need to be unique or anything.

I haven't been able to find an equivalent to jsonb_object_keys for values only.


Solution

  • Use it as a proper set returning function:

    select t.value
    from jsonb_each_text('{"text": "this is text", "text2": "this is text2", "f_id": "21"}') as t(key, value);