从文件名中删除扩展名

Kin*_*ngs 13 sql t-sql

我正在使用SQL.

在表tblDemo中,其中一列是'FileName'.此列的每一行包含具有任何扩展名的不同文件名.对于前者 'flower.jpeg','batman.mov',study.pdf等.

请建议我查询,这可以帮助我从'文件名'列的每一行删除扩展名(和点也).所以我只能取名Ex.'花','蝙蝠侠','学习'等

谢谢

Joh*_*Woo 36

尝试这个:

UPDATE TableName
SET FileName = REVERSE(SUBSTRING(REVERSE(FileName), 
                       CHARINDEX('.', REVERSE(FileName)) + 1, 999))
Run Code Online (Sandbox Code Playgroud)

查看演示@ SQLFiddle.com

  • 对于MySQL用户,使用LOCATE而不是CHARINDEX (4认同)
  • @johnny5 999 是字符串(文件名)的起始参数。来自 https://www.w3schools.com/sql/func_sqlserver_charindex.asp:“搜索开始的位置(如果您不想从字符串的开头开始)。字符串中的第一个位置是 1。” 如果列中的字符串超过 999 个字符,则必须修改此参数。在大多数情况下,这个数字应该足够了。 (2认同)

Jci*_*cis 10

在Sql Server上测试.这显示没有扩展名的文件名,更改为更新/设置以修改数据.

SELECT left([FileName], len([FileName]) - charindex('.', reverse([FileName]))) 
  FROM tblDemo
Run Code Online (Sandbox Code Playgroud)

已编辑:使用反向修改,因此当字段包含多个点时也可以使用.

这里是更新表版本:

UPDATE Testing 
   Set [FileName] = left([FileName], 
                         len([FileName]) - charindex('.', Reverse([FileName])))
Run Code Online (Sandbox Code Playgroud)