Por fin luego de tanto luchar hemos dado con la respuesta de esta pregunta que muchos usuarios de este sitio tienen. Si tienes algún detalle que compartir no dudes en aportar tu comentario.
Solución:
Puede obtener la extensión haciendo:
select reverse(left(reverse(FilePath), charindex('.', reverse(FilePath)) - 1))
Sin embargo, le recomiendo que compruebe que existe un '.'
en el nombre primero:
select (case when FilePath like '%.%'
then reverse(left(reverse(FilePath), charindex('.', reverse(FilePath)) - 1))
else ''
end) as Extension
SELECT CASE
WHEN filepath LIKE '%.%' THEN RIGHT(filepath, Len(filepath) -
Charindex('.', filepath))
ELSE filepath
END FilePath
FROM tbl1
Manifestación
Al buscar extensiones específicas y tratar con textos que tienen muchos puntos, lo siguiente proporciona un enfoque más específico.
with extensionTable ([extension]) AS
(
SELECT '.pdf'
UNION ALL SELECT '.txt'
UNION ALL SELECT '.doc'
UNION ALL SELECT '.docx'
UNION ALL SELECT '.xls'
UNION ALL SELECT '.xlsx'
UNION ALL SELECT '.ppt'
UNION ALL SELECT '.pptx'
UNION ALL SELECT '.zip'
UNION ALL SELECT '.tar.gz'
UNION ALL SELECT '.htm'
UNION ALL SELECT '.html'
)
SELECT T2.[extension]
, T1.[document_file_name]
FROM tbl T1
OUTER APPLY ( SELECT TOP 1 [extension]
FROM extensionTable
WHERE CHARINDEX([extension], T1.[document_file_name]) > 0
ORDER BY CHARINDEX([extension], T1.[document_file_name]) DESC, LEN([extension]) DESC
) T2
Aquí tienes las comentarios y calificaciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)