Eliminar caracteres especiales y acentos de cadenas Oracle

Hola Amig@s,

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.


Share on Google Plus
    Blogger Comment

0 comentarios: