Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/05/2013, 10:25
lbaro
 
Fecha de Ingreso: abril-2013
Mensajes: 3
Antigüedad: 11 años, 1 mes
Puntos: 0
Reemplazo de cadena

No me reemplaza la cadena que quiero, porque?
Acaso no estoy en una posicion del arreglo
Abierta a cualquier sugerencia
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION reemplazar()
  2.   RETURNS SETOF fila_procesada AS
  3. $BODY$
  4. DECLARE
  5. fila fila_procesada;
  6. palabra VARCHAR;
  7. palabra_dentro VARCHAR;
  8. fin INTEGER;
  9. fin_dentro INTEGER;
  10. var record;
  11. longitud INTEGER;
  12. temporal VARCHAR;
  13. arreglo VARCHAR[]:= '{}';
  14. campo VARCHAR[]:= '{}';
  15. aux VARCHAR[]:= '{ERROR:tiene q tener toda la oracion}';
  16. BEGIN
  17. FOR var IN SELECT idtarea, tarea FROM prueba --where idtarea='97111'or idtarea='97278'
  18. LIMIT 5
  19. loop
  20.   temporal:= (SELECT regexp_replace(var.tarea, '[^a-zA-Z0-9ñÑáéíóúüÁÉÍÓÚ]+','/','g'));
  21.   temporal:= (SELECT btrim(temporal, '0123456789./ '));
  22.   temporal:= (SELECT ltrim(temporal,'0123456789./ '));
  23.   temporal:= (SELECT UPPER(SUBSTRING(temporal,1,1)) || LOWER(SUBSTRING(temporal, 2)));
  24.   arreglo := (SELECT regexp_split_to_array(temporal, '[^a-zA-Z0-9ñÑáéíóúüÁÉÍÓÚ]+'));
  25. fin:= (SELECT array_length(arreglo,1))::INTEGER;
  26. FOR i IN 1..fin
  27. loop
  28. palabra:= arreglo[i];
  29. IF SUBSTRING(palabra FROM 1)='Nc'
  30. THEN perform REPLACE(palabra_dentro,'Nc','no conformidades');--then perform regexp_replace(palabra,'Nc','no conformidades','');
  31. END IF;
  32. aux[i]:=palabra;
  33. END loop;
  34. --update prueba set tarea=aux where idtarea=var.idtarea ;
  35. fila.idtarea:= var.idtarea;
  36. fila.tarea := aux;
  37. RETURN NEXT fila;
  38. END loop;
  39. RETURN;
  40. END;
  41. $BODY$
  42.   LANGUAGE plpgsql

Última edición por gnzsoloyo; 19/05/2013 a las 20:02