From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Isaac Marco Blancas <isaac(dot)marco(at)udima(dot)es> |
Cc: | "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org> |
Subject: | problem with regexp_matches in nested funcion |
Date: | 2015-09-22 12:36:33 |
Message-ID: | CAKFQuwYWFvvy3cSLw1ny=UOkhsY+yvQa84tdsxath2UeFXkFMQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Tuesday, September 22, 2015, Isaac Marco Blancas <isaac(dot)marco(at)udima(dot)es
<javascript:_e(%7B%7D,'cvml','isaac(dot)marco(at)udima(dot)es');>> wrote:
> I get this error:
>
> ERROR: functions and operators can take at most one set argument
> SQL state: 0A000
>
> When I run this:
>
> select message as before,
> replace(message,
>
> array_to_string(regexp_matches(message,'\\$\\$.*?\\{tabular\\}.*?\\$\\$'),
> '#'),
>
> replace(array_to_string(regexp_matches(message,'\\$\\$.*?\\{tabular\\}.*?\\$\\$'),
> '#'),'tabular','array')) as later
> from mdl_forum_posts
> where message ~ '\\$\\$.*?\\{tabular\\}.*?\\$\\$';
>
> I know the problem is in the second array_to_string. Some idea?
>
>
Regexp_matches returns a set of arrays, not one-and-only-one. You need to
decide on a strategy to pass only single rows into the array and replace
functions. I personally wrote a regexp_matches_single function that wraps
the and use that in almost all situations. It wraps the Mai. Function but
is defined to always return a single array.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Isaac Marco Blancas | 2015-09-22 15:11:41 | Re: problem with regexp_matches in nested funcion |
Previous Message | Isaac Marco Blancas | 2015-09-22 09:00:07 | problem with regexp_matches in nested funcion |