From: | Torsten Förtsch <tfoertsch123(at)gmail(dot)com> |
---|---|
To: | Philipp Kraus <philipp(dot)kraus(at)tu-clausthal(dot)de> |
Cc: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: array_agg to array |
Date: | 2018-05-16 07:10:54 |
Message-ID: | CAKkG4_kTQgG4tymL0_U=_+sNubUBWuUCZHGnKMDfQwxqVaqcFA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, May 16, 2018 at 8:14 AM, Philipp Kraus <
philipp(dot)kraus(at)tu-clausthal(dot)de> wrote:
> Hello,
>
> I have got a function with a reg expr to split chemical formulas e.g. H2O
> -> H2 O.
>
> CREATE OR REPLACE FUNCTION daimon.text2sumformula(text) RETURNS text[] AS
> $$
> select array_agg(i::text) as e from ( select unnest( regexp_matches(
> $1, '[0-9]*[A-Z][a-z]?\d*|\((?:[^()]*(?:\(.*\))?[^()]*)+\)\d+', 'g') ) )
> i;
> $$ LANGUAGE SQL IMMUTABLE;
>
> For H2O I get an array with {(H2),(O)}
> How I can return the inner elements as text, I would like to get {H2,O}
> without round brackets?
>
like this?
postgres=# select array_agg(i[1]) as e from regexp_matches( 'H2O',
'[0-9]*[A-Z][a-z]?\d*|\((?:[^()]*(?:\(.*\))?[^()]*)+\)\d+', 'g') t(i);
e
--------
{H2,O}
(1 row)
From | Date | Subject | |
---|---|---|---|
Next Message | Philipp Kraus | 2018-05-16 07:15:07 | Re: array_agg to array |
Previous Message | Pavel Stehule | 2018-05-16 07:07:15 | Re: Function to set up variable inside it |