2012-06-28 11 views
8

Sto usando SQL.Rimuovere le estensioni dal nome file

In una tabella tblDemo, una delle colonne è 'FileName'. Ogni riga di questa colonna contiene un nome file diverso con qualsiasi estensione. Per es. 'flower.jpeg', 'batman.mov', study.pdf ecc.

Si prega di suggerire una query che potrebbe aiutarmi a rimuovere l'estensione (e il punto) da ogni riga della colonna "nomi file" . In modo che potessi recuperare solo il nome Ex. 'Fiore', 'Batman', 'studio', ecc

Grazie

+2

questo vi aiuterà - http://stackoverflow.com/questions/1024978/find-index-of-last-occurrence-of-a-sub-string-using-t-sql – Kshitij

risposta

26

provare questo fuori:

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

View For a DEMO @ SQLFiddle.com

+0

u r champ. Ha funzionato. Rimuove infatti l'estensione da fileName, anche se il nome del file contiene più "punti". Modificherò il tuo post solo un po ', in modo che possa essere d'aiuto a qualsiasi altro in futuro. – Kings

+3

Per gli utenti MySQL utilizzare LOCATE anziché CHARINDEX –

+0

Link non funziona correttamente. – thecoolmacdude

6

provata su Sql Server. Mostra i nomi dei file senza estensione, passa a Aggiorna/Imposta per modificare i dati.

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

Modificato: modificata utilizzando Reverse, quindi funziona anche quando il campo contiene più punti.

Qui il Aggiorna tabella versione:

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

non funzionerà in c come "This.Is.My.Filename.Txt". – Ben

+0

Ben/Jcis - cosa modificare nella query citata, per tenere conto del caso simile a questo: - 'This.Is.My.Filename.Txt' – Kings

+0

aggiornato per gestire più punti nel nome file – Jcis

Problemi correlati