From: | Jasen Betts <jasen(at)xnet(dot)co(dot)nz> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: problem using regexp_replace |
Date: | 2010-01-12 12:10:50 |
Message-ID: | hihosa$sj4$1@reversiblemaps.ath.cx |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On 2010-01-11, gherzig(at)fmed(dot)uba(dot)ar <gherzig(at)fmed(dot)uba(dot)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;
From | Date | Subject | |
---|---|---|---|
Next Message | gherzig | 2010-01-12 16:17:40 | Re: problem using regexp_replace |
Previous Message | Tom Lane | 2010-01-12 00:10:33 | Re: CHECK constraint removing brackets |