2012-06-28 15 views
8

Estoy usando SQL.Eliminar extensiones del nombre de archivo

En una tabla tblDemo, una de las columnas es 'FileName'. Cada fila de esta columna contiene un nombre de archivo diferente con cualquier extensión. Por ej. 'flower.jpeg', 'batman.mov', study.pdf etc.

Por favor sugiérame en una consulta que podría ayudarme a eliminar la extensión (y el punto también) de cada fila de la columna 'filenames' . Para que pueda buscar solo el nombre Ex. 'Flor', 'Batman', 'estudio', etc.

Gracias

+2

esto ayudará - http://stackoverflow.com/questions/1024978/find-index-of-last-occurrence-of-a-sub-string-using-t-sql – Kshitij

Respuesta

26

tratar éste hacia fuera:

UPDATE TableName 
SET FileName = REVERSE(SUBSTRING(REVERSE(FileName), 
         CHARINDEX('.', REVERSE(FileName)) + 1, 999)) 

View For a DEMO @ SQLFiddle.com

+0

u r campeón. Funcionó. De hecho, elimina la extensión de fileName, incluso si el nombre de archivo tiene múltiples 'puntos' en él. Editaré tu publicación solo un poco, para que pueda ayudar a cualquier otra en el futuro. – Kings

+3

Para usuarios de MySQL, use LOCATE en lugar de CHARINDEX –

+0

El enlace no funciona correctamente. – thecoolmacdude

6

Probado en SQL Server. Esto muestra los nombres de archivo sin extensión, cambie a Actualizar/Establecer para modificar datos.

SELECT left([FileName], len([FileName]) - charindex('.', reverse([FileName]))) 
    FROM tblDemo 

Editado: modificada utiliza la inversión, por lo que también funciona cuando el campo contiene múltiples puntos.

Aquí el Actualizar tabla versión:

UPDATE Testing 
    Set [FileName] = left([FileName], 
         len([FileName]) - charindex('.', Reverse([FileName]))) 
+0

no funcionará en c ase "This.Is.My.Filename.Txt". – Ben

+0

Ben/Jcis - qué modificar en la consulta mencionada, para tener en cuenta el caso similar a esto: - 'This.Is.My.Filename.Txt' – Kings

+0

actualizado para manejar varios puntos en el nombre de archivo – Jcis

Cuestiones relacionadas