> > >> -----Mensaje original----- >> De: [email protected] >> >> 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! >> > > Diabólico! Hubiera jurado que el problema estaba en comparar elementos de > un > array de varchars con text, pero no. Pasé todo a text, forcé casts por > todos > lados sin efecto y el problema persiste. > En cambio la llamada SELECT valores_sustitucion(ARRAY['Funcion_1', > 'valor']) > funciona correctamente. > > Me lleva a pensar que el \n del regexp_replace no está funcionando como > esperábamos. > > ¿Habrás encontrado un bug? Creo que merece ser consultado en la lista > [email protected]. > > Saludos, > Fernando. >
Si, hay algo muy extraño que no logro comprender. Ya hice mi post en la lista internacional, pero parece que mi pauperrimo ingles no atrajo a nadie a atacar este problema. Seguire sufriendo! Gracias! Gerardo -- TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
