Si necesitamos limpiar una cadena de un registro de Oracle que contengan caracteres especiales como separadores de código, unicode y palabras con acento, la mejor forma que he encontrado es utilizando este método simplemente con las funciones de Oracle.
select utl_raw.cast_to_varchar2(nlssort(NOMBREDELCAMPO, 'nls_sort=binary_ai'))
from NOMBREDELATABLA;
Con esta consulta al tener una cadena como la siguiente:
El otro día visité el blogdelpibe :)
Quedará de esta manera:
El otro dia visite el blogdelpibe :)
14/03/2021 por si lo quieren en una función:
--función que transforma un texto con caracteres especiales en caracteres normales
--ej. ñ > n, í > i
--14/03/2021 EAG.
CREATE OR REPLACE FUNCTION TRATARTEXTO
(param1 IN VARCHAR2) RETURN VARCHAR2
AS
SALIDA VARCHAR2(1000);
BEGIN
SELECT UPPER(utl_raw.cast_to_varchar2(nlssort(param1, 'nls_sort=binary_ai'))) INTO SALIDA
FROM DUAL;
RETURN SALIDA;
END TRATARTEXTO;
Si queremos respetar las mayúsculas y minúsculas hay que usar esta otra solución.
select regexp_replace(regexp_replace('1234', '[(][A-Z]+[)]',
''), '[^a-zA-Z-0-9]', '') FROM DUAL
Espero que les resulte útil.
Salu2.
0 comentarios:
Publicar un comentario