Oracle/PLSQL: extraiga el nombre de archivo de la ruta de archivo completa (incluido el sufijo)

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: extraiga el nombre de archivo de la ruta de archivo completa (incluido el sufijo)

Problema: tengo una cadena que contiene la ruta completa a un archivo. ¿Cómo extraer el nombre de archivo (incluido el sufijo) de una cadena en Oracle?

Por ejemplo, si tengo una ruta de archivo completa como esta:

'c:windowstempexample.xls'

Quiero recuperar lo siguiente:

'example.xls'

R: Puede crear una función personalizada en Oracle que recuperará el nombre de archivo de un valor de cadena.

La siguiente función llamada get_filename extraerá la ruta del directorio. Funciona con rutas de archivo de sistema Windows y UNIX.

CREATE or REPLACE function get_filename
   (p_path IN VARCHAR2)
   RETURN varchar2

IS
   v_file VARCHAR2(100);

BEGIN

   -- Parse string for UNIX system
   IF INSTR(p_path,'/') > 0 THEN
      v_file := SUBSTR(p_path,(INSTR(p_path,'/',-1,1)+1),length(p_path));

   -- Parse string for Windows system
   ELSIF INSTR(p_path,'') > 0 THEN
      v_file := SUBSTR(p_path,(INSTR(p_path,'',-1,1)+1),length(p_path));

   -- If no slashes were found, return the original string
   ELSE
      v_file := p_path;

   END IF;

   RETURN v_file;

END;

Después de crear la función anterior, puede hacer referencia a la función en las instrucciones SQL. Por ejemplo,

SELECT get_filename('c:tempexample.xls')
FROM dual;

Esta instrucción SQL devolverá “example.xls”.