problem with regexp_matches in nested funcion

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: Raw Message | Whole Thread | 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.

In response to

Responses

Browse pgsql-sql by date

  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