From: gherzig@fmed.uba.ar
To: Jasen Betts <jasen@xnet.co.nz>
Cc: pgsql-sql@postgresql.org
Subject: Re: problem using regexp_replace
Date: Tue, 12 Jan 2010 14:17:40 -0200 (ARST)
Message-ID: <0862feba5dd70bb08d69d1cd4c33eb29.squirrel@www.webmail.fmed.uba.ar> (raw)
In-Reply-To: <hihosa$sj4$1@reversiblemaps.ath.cx>
References: <6f55ccf2a59fe7bca287389ec92e5f91.squirrel@www.webmail.fmed.uba.ar>
<hihosa$sj4$1@reversiblemaps.ath.cx>
> On 2010-01-11, gherzig@fmed.uba.ar <gherzig@fmed.uba.ar> wrote:
>
>> So, i come with this:
>> SELECT regexp_replace(
>> formato, E'{([^.]*)\.([a-zA-Z0-9]*)},
>> valores_sustitucion(ARRAY[E'\\1'::varchar,E'\\2'::varchar]),
>> 'g')
>> from table where id =1;
>
> select valores_sustitucion(ARRAY[E'\\1'::varchar,E'\\2'::varchar]);
>
> valores_sustitucion
> ---------------------
> FALSE
>
> that's the problem you are getting, the valores_sustitucion works on
> the values given and that result is given to regexp_replace.
>
> try this:
>
> create OR REPLACE function magic( inp text ) returns text as $F$
> DECLARE
> tmp text;
> res text;
> BEGIN
> tmp= 'SELECT ' ||
> regexp_replace(quote_literal(inp),E'{([^.]*)\.([a-zA-Z0-9]*)}',
> $s$'|| valores_sustitucion(ARRAY[E'\1',E'\2']) ||'$s$,'g');
> -- raise notice 'tmp=%',(tmp);
> EXECUTE tmp INTO res;
> RETURN res;
> END;
> $F$ language plpgsql;
>
> SELECT magic( formato ) FROM from table where id =1;
>
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
>
>
You hit that really hard, Jasen, thank you very much!!
You save my week :)
Thanks again.
Gerardo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: gherzig@fmed.uba.ar, jasen@xnet.co.nz
Subject: Re: problem using regexp_replace
In-Reply-To: <0862feba5dd70bb08d69d1cd4c33eb29.squirrel@www.webmail.fmed.uba.ar>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox