Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Reemplazo de cadena

Estas en el tema de Reemplazo de cadena en el foro de PostgreSQL en Foros del Web. TENGO ESTA FUNCION LO QUE QUIERO LOGRAR CON ELLA ES DESPLAZARME DENTRO DE UN ARREGLO PARA COMPARAR LAS PALABRAS PARA CAMBIARLAS Y NO ME COGE ...
  #1 (permalink)  
Antiguo 07/05/2013, 13:07
 
Fecha de Ingreso: abril-2013
Mensajes: 3
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Reemplazo de cadena

TENGO ESTA FUNCION LO QUE QUIERO LOGRAR CON ELLA ES DESPLAZARME DENTRO DE UN ARREGLO PARA COMPARAR LAS PALABRAS PARA CAMBIARLAS Y NO ME COGE EL CONCATENAR, ME DEVUELVE LA VARIABLE NADA MAS ASI SIN LAS PALABRAS DEL ARREGLO
Q HACER????
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION otraprueba()
  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. tupla VARCHAR[]:= '{}';
  15. aux VARCHAR[]:= '{noooooo}';
  16. BEGIN
  17. FOR var IN SELECT idtarea, tarea FROM prueba
  18. loop
  19.   temporal:= (SELECT regexp_replace(var.tarea, '[^a-zA-Z0-9ñÑáéíóúüÁÉÍÓÚ]+','/','g'));
  20.   temporal:= (SELECT btrim(temporal, '0123456789./ '));
  21.   temporal:= (SELECT ltrim(temporal,'0123456789./ '));
  22.   temporal:= (SELECT UPPER(SUBSTRING(temporal,1,1)) || LOWER(SUBSTRING(temporal, 2)));
  23.   arreglo := (SELECT regexp_split_to_array(temporal, '[^a-zA-Z0-9ñÑáéíóúüÁÉÍÓÚ]+'));
  24. fin:= (SELECT array_length(arreglo,1))::INTEGER;
  25. FOR i IN 1..fin
  26. loop
  27. palabra:= arreglo[i];
  28. tupla:=(SELECT regexp_split_to_array(palabra, '[^a-zA-Z0-9ñÑáéíóúüÁÉÍÓÚ]+'));
  29. fin_dentro:=(SELECT array_length(tupla,1))::INTEGER;
  30. FOR j IN 1..fin_dentro
  31. loop
  32. palabra_dentro:=tupla[j];
  33. IF palabra_dentro LIKE 'NC'
  34. --if similarity(palabra_dentro,'NC')=1
  35. THEN SELECT REPLACE(palabra_dentro,'NC','no conformidades');
  36. perform array_append(aux,palabra_dentro);
  37. ELSE
  38. perform array_append(aux,palabra_dentro);
  39. END IF;
  40. END loop;
  41. END loop;
  42. fila.idtarea:= var.idtarea;
  43. fila.tarea := aux;
  44. RETURN NEXT fila;
  45. END loop;
  46. RETURN;
  47. END;
  48. $BODY$
  49.   LANGUAGE plpgsql

Última edición por gnzsoloyo; 07/05/2013 a las 13:29
  #2 (permalink)  
Antiguo 16/05/2013, 10:25
 
Fecha de Ingreso: abril-2013
Mensajes: 3
Antigüedad: 11 años, 8 meses
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
  #3 (permalink)  
Antiguo 19/05/2013, 15:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Reemplazo de cadena

uhm, esto es un trabajo de varios?
lo pregunto porque estoy casi completamente seguro que
la semana anterior se abrio un post con esta misma temática,
o el otro post era tuyo también??
te sugiero busques el otro post, para ver que seguimiento
se le hizo
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 19/05/2013, 20:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Reemplazo de cadena

El SP que estás ponienddo acá ya fue posteado en el thread: http://www.forosdelweb.com/f99/conca...texto-1050343/

Incluso ese thread está marcado como "SOLUCIONADO".

Si lo que tratas es de avazar sobre el mismo tema, deberías haber continuado el otro, para aportar mas data y poder resolver todo, y no abrir un thread nuevo.
Así que: O cierro el otro , o bien los fusiono en uno sólo

¿Que quieres hacer y cuál debe permanecer abierto?

En caso de no recibir una aclaración procederé a fusionar ambos, pero no pueden quedar ambos abiertos, porque se prestan a confusiones, como bien te lo remarca @mortiprogramador.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/05/2013, 20:34
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Concatenar texto

hola
bueno, pues creo que serïa mejor que subieras un pequeño ejemplo de la data que tienes, y lo que quieres lograr al extraer la data, lo digo para hacer pruebas con la data sugerida y haciendo uso de la función que planteas y tratar de obtener lo que se quiere.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 20/05/2013, 07:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Reemplazo de cadena

Fusionado con tema posterior.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: postgres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:07.