¿Cómo extraer información de una ruta de archivo?

publicado por: Anonymous

Por ejemplo, tengo esta cadena: \127.0.0.1Manualesnombremanual.pdf

Lo que quiero es extraer la extensión de ese archivo, en este caso lo que está después del último punto. Que me quede solo la extensión del archivo en una variable y el resto en otra. Y extraer lo que está después del último De esta manera:

SET @Variable1 = '\127.0.0.1Manuales'    
SET @Variable2 = '.pdf'    
SET @Variable3 = 'nombremanual'

Pensé en hacer una combinación de las funciones CHARINDEX y SUBSTRING, pero no sé bien cómo realizarlo.

solución

Para obtener información de una ruta de archivo podrías considerar:

DECLARE @RUTA_ARCHIVO VARCHAR(100) = '\127.0.0.1Manualesnombremanual.pdf'
DECLARE @ARCHIVO_RUTA VARCHAR(50), @ARCHIVO_NOMBRE VARCHAR(50), @ARCHIVO_EXTENSION VARCHAR(50)

SELECT
    @ARCHIVO_RUTA = LEFT(@RUTA_ARCHIVO, LEN(@RUTA_ARCHIVO) - CHARINDEX('', REVERSE(@RUTA_ARCHIVO)) + 1),    
    @ARCHIVO_NOMBRE = REVERSE(SUBSTRING(REVERSE(@RUTA_ARCHIVO), CHARINDEX('.', REVERSE(@RUTA_ARCHIVO)) + 1, CHARINDEX('', REVERSE(@RUTA_ARCHIVO)) - CHARINDEX('.', REVERSE(@RUTA_ARCHIVO)) - 1)),
    @ARCHIVO_EXTENSION = RIGHT(@RUTA_ARCHIVO, CHARINDEX('.', REVERSE(@RUTA_ARCHIVO)))

SELECT 
    @ARCHIVO_RUTA [RUTA ARCHIVO],
    @ARCHIVO_NOMBRE [NOMBRE ARCHIVO], 
    @ARCHIVO_EXTENSION [EXTENSION ARCHIVO]

Obtendrás:

+-----------------------+----------------+-------------------+
|     RUTA ARCHIVO      | NOMBRE ARCHIVO | EXTENSION ARCHIVO |
+-----------------------+----------------+-------------------+
| \127.0.0.1Manuales | nombremanual   | .pdf              |
+-----------------------+----------------+-------------------+

DEMO

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *