Buscar en el Blog

martes, 11 de mayo de 2010

Cómo eliminar un salto de línea LF(Line feed, '\n', 0x0A, 10 en decimal) en los datos de una columna de Oracle

Muchas veces nos encontramos con columnas de tipo de dato VARCHAR con valores que poseen saltos de línea (LF - Line Feed). Por ejemplo, supongamos que se tiene la siguiente tabla de base de datos, creada con el siguiente script SQL:

CREATE TABLE TABLA (COLUMNA VARCHAR2(128));
INSERT INTO TABLA VALUES ('MAURICIO MURILLO' || CHR(10) || 'INGMMURILLO');
COMMIT;
SELECT * FROM TABLA;

Al consultar el registro de la tabla se obtendrá lo siguiente:








Como se puede observar, los datos de la columna COLUMNA contienen un salto de línea representado por /n. Para reemplazar los saltos de línea que se encuentren en la cadena de texto por un espacio en blanco se usa la función SQL REPLACE como se muestra a continuación:

SELECT 
REPLACE(REPLACE(REPLACE(COLUMNA,CHR(10),' ') ,CHR(13),' ') ,'  ',' ') AS COLUMNA_NUEVA FROM TABLA;


El script SQL anterior me permitirá reemplazar los saltos de línea por espacios en blanco.


29 comentarios:

  1. tio eres el puto amo, me has salvado el dia. GRACIAS

    ResponderEliminar
  2. Gracias. Me ha servido mucho. Pol

    ResponderEliminar
  3. muchas gracias, me sirvió perfecto!

    ResponderEliminar
  4. muchísimas gracias, me ahorraste mucho tiempo

    ResponderEliminar
  5. muchas gracias viejo, llevaba un buen rato matandome la cabeza.

    ResponderEliminar
  6. Excelente, me fue de mucha utilidad, gracias por compartir esta informacion

    ResponderEliminar
  7. Muchas Gracias, me fue de mucha utilidad, me ahorro muchos trabajo.

    ResponderEliminar
  8. Gracias rey, buen aporte y funciona.

    Saludox by QPR

    ResponderEliminar
  9. Gracias man! Estaba que me daba vueltas ese problema.!!

    ResponderEliminar
  10. muchras gracias, me fue muy utils y me funciono para DB2

    ResponderEliminar
  11. Gracias Man no sabes de la que me has salvado.

    ResponderEliminar
  12. genial a mi tambien me sirvio bastente muchas gracias

    ResponderEliminar
  13. Si quieres que se actualice en BD directo y no solo la consulta y que se separen las lineas por una ",":


    UPDATE TABLA SET
    columna = REPLACE(REPLACE(REPLACE(columnaCHR(10),',') ,CHR(13),' ') ,' ',' ') ;

    ResponderEliminar
  14. Perfecto. Funciono. se deben usar ambos replace. No son excluyentes

    ResponderEliminar
  15. tengo un shell que genera el respaldo de bd a txt, sin embargo existen saltos de linea genere un otro shell para hacer un reproceso de las tablas que tienen los saltos, sin embargo no lo hace,es con db2 existe el ambiente de producción y desarrollo, en desarrollo mi proceso lo hace correctamente con el replace sin embargo en producción se cuenta con una version anterior de bd2 y ahi no corre mi reproceso. que otra función puedo utilizar que no sea replace para quitar saltos de linea?

    ResponderEliminar
  16. Gracias!!! Me fue de gran utilidad!

    ResponderEliminar
  17. Desde Perú... muchas gracias.

    ResponderEliminar
  18. Hola amigos. Tengo un problema con Spool en SQLPlus. Uso SQL Developer 4.1 me piden que saque un txt sin cabeceras de una consulta. Hago esto

    SET PAGESIZE 1000 LINESIZE 200 ECHO OFF TRIMS ON FEEDBACK OFF HEA OFF
    SPOOL C:\trabajo_bd_plsql\telefonos.txt
    @micodigo.sql;
    SPOOL OFF

    Y obtengo el archivo txt pero le agrega un espacio al comenzar:

    04100000055 Mensaje de Bienvenida220
    04100000444 Mensaje de Bienvenida1
    04100000056 Mensaje de Bienvenida2

    Con un espacio de linea completa arriba del archivo. He intentado con hea off y nada.

    Alguna idea.??????

    ResponderEliminar
  19. me sirvió muchisisiisismoooooo muchas gracias

    ResponderEliminar