salida regexp_replace procedimientos procedimiento parametros multiple funciones ejemplos ejemplo ejecutar developer con characters almacenado sql oracle

sql - regexp_replace - La función Oracle REPLACE() no está manejando devoluciones de carro y alimentaciones de línea



regexp_replace oracle ejemplos (6)

Tenemos una tabla con una columna varchar2(100) que ocasionalmente contiene retorno de carro y alimentaciones de línea. Nos gustaría eliminar esos caracteres en la consulta SQL. Estamos usando:

REPLACE( col_name, CHR(10) )

que no tiene ningún efecto , sin embargo, al reemplazar ''CHR (10)'' por un carácter de ''letra'' más convencional se comprueba que la función REEMPLAZAR funciona de otra manera. También hemos encontrado que

REPLACE( col_name, CHR(10), ''_'' )

encuentra la ubicación de la nueva línea, pero inserta el guión bajo después de ella, en lugar de reemplazarla.

Ejecutando en Oracle8i. Actualizar no es una opción.


¿Estás seguro de que tu nueva línea no es CHR(13) + CHR(10) , en cuyo caso, CHR(13) + ''_'' con CHR(13) + ''_'' , que aún puede parecer una nueva línea?

Intente REPLACE(col_name, CHR(13) + CHR(10), '''')


Otra forma es usar TRANSLATE :

TRANSLATE (col_name, ''x''||CHR(10)||CHR(13), ''x'')

La ''x'' es cualquier caracter que no desee convertir a nulo, porque TRANSLATE no funciona bien si el 3er parámetro es nulo.


Si los datos en su base de datos se PUBLICAN desde controles de TextArea en formato HTML, diferentes navegadores utilizan diferentes caracteres de Nueva línea:

Firefox separa las líneas solo con CHR (10)

Internet Explorer separa las líneas con CHR (13) + CHR (10)

Apple (pre-OSX) separa líneas solo con CHR (13)

Entonces puede necesitar algo como:

set col_name = replace(replace(col_name, CHR(13), ''''), CHR(10), '''')


Si su carácter de nueva línea es CRLF , eso significa que es un CHR(13) seguido de CHR(10) . Si REPLACE(input, CHR(10), ''_'') , eso se convierte en CHR(13) seguido de un guión bajo. Debido a que el CR por sí solo puede representarse como un carácter de nueva línea, le parecerá que ha insertado un guión bajo después de su línea nueva, pero en realidad solo se ha reemplazado la mitad de la nueva línea.

Utilice REPLACE(REPLACE(input, CHR(13)), CHR(10)) para reemplazar todos los CR y LF .


Solo quería dejar caer una nota. Estaba teniendo problemas para formatear un campo de texto 4000 que tenía una mente propia y el texto parecería envolver (o no ajustar) aleatoriamente en el informe. Cuando actualicé la columna usando el reemplazo chr (10) señalado arriba. Mi informe finalmente formateado como yo quería. ¡Muchas Gracias!


¡Ah ah! Cade está en el dinero.

Un artefacto en TOAD imprime /r/n como dos caracteres ''blob'' de marcador de posición, pero imprime un único /r también como dos marcadores de posición. El primer paso hacia una solución es usar ...

REPLACE( col_name, CHR(13) || CHR(10) )

..pero opté por el un poco más robusto ...

REPLACE(REPLACE( col_name, CHR(10) ), CHR(13) )

.. que atrapa personajes ofensivos en cualquier orden. Muchas gracias a Cade.

METRO.