From: | gherzig(at)fmed(dot)uba(dot)ar |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | problema usando regexp_replace |
Date: | 2010-01-12 01:20:51 |
Message-ID: | 825bb0a1676ca4cd68cc8a6c0cb21690.squirrel@www.webmail.fmed.uba.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos/as: Estoy aqui con una funcion que utiliza regexp_replace,
pero en lugar de sustituir por un texto, quiero sustituir por el resultado
de otra funcion, pasandole como argumentos, lo que capture previamente (en
2 grupos)
Este es un pequeño ejemplo con un registro cualquiera:
SELECT formato from tabla where id=1;
<TR><TD>{Funcion_1.842}</TD></TR></TBODY></TABLE><TABLE><TBODY><TR><TD>{Funcion_2.842A}</TD>[snip]
La idea es tomar eso que esta entre {}, lo que esta a la izquierda del
punto es el primer argumento, y el resto el segundo argumento para
pasarles a la "funcion reemplazadora".
*Para simplificar*, la "funcion reemplazadora" solo hace esto:
CREATE OR REPLACE FUNCTION valores_sustitucion(valor_ingresado varchar[])
...
select case $1[1] when 'Funcion_1' then 'UNO'
when 'Funcion_2' then 'DOS'
else $1[1] || ',SALIOPORELSE'
end;
Entonces, aqui es donde uso regexp_replace:
SELECT regexp_replace(formato,
E'{([^.]*)\.([a-zA-Z0-9]*)}',
valores_sustitucion(ARRAY[E'\\1',E'\\2']), 'g')
from tabla where id=1;
Aqui capturo en el primer grupo lo que esta antes del punto, el resto en
el segundo grupo, y se los paso como argumentos a valores_sustitucion...
Pero no hace lo que quiero, pues..
<TR><TD>Funcion_1,SALIOPORELSE</TD></TR></TBODY></TABLE><TABLE><TBODY><TR><TD>Funcion_2,SALIOPORELSE[snip]
O sea, el case no captura Funcion_1, ni Funcion_2, y sale por el ELSE...
No logro comprender donde esta mi error.
Consejos, opiniones, seran bienvenidas!
Gerardo
From | Date | Subject | |
---|---|---|---|
Next Message | Luis Esteban | 2010-01-12 13:10:14 | Re: [pgsql-es-ayuda] Felicitaciones a Álvaro |
Previous Message | Julio Cesar Rodriguez Dominguez | 2010-01-12 00:22:16 | Re: RV: duda con funcion |