Re: json_array_elements_text?

From: Marti Raudsepp <marti(at)juffo(dot)org>
To: Laurence Rowe <l(at)lrowe(dot)co(dot)uk>
Cc: PostgreSQL <pgsql-general(at)postgresql(dot)org>
Subject: Re: json_array_elements_text?
Date: 2014-01-20 10:34:31
Message-ID: CABRT9RBTKzSWvuwd7ztXx=b7Sh0Z4gutdXPeE=j30sfV5acCMA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Jan 17, 2014 at 10:20 AM, Laurence Rowe <l(at)lrowe(dot)co(dot)uk> wrote:
> I'm trying to unpack a json array into it's constituent text values so I can
> join them to a table. I can successfully unpack json values, but am having
> trouble converting these to text so I can cast them to the UUIDs needed for
> the join.

You're right, this seems to be a glaring omission in our JSON support.
I can't see any patches queued for 9.4 that would implement this,
either.

> http://dba.stackexchange.com/questions/54283/how-to-turn-json-array-into-postgres-array
> suggest using trim, and this does work:

This trick doesn't take care of properly unescaping the JSON string,
although it will work for UUID values.

This solution is just as hacky, but you can use array extraction
functions to properly convert it to text:

CREATE FUNCTION json_text(json) RETURNS text IMMUTABLE LANGUAGE sql
AS $$ SELECT ('['||$1||']')::json->>0 $$;

Regards,
Marti

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Marti Raudsepp 2014-01-20 10:54:29 Re: json_array_elements_text?
Previous Message Andreas Lubensky 2014-01-20 10:15:12 Re: Positional parameters and question mark notation