卸下文件扩展名(Remove extensions from filename)

2019-06-25 20:59发布

我使用的是SQL。

在表tblDemo,列中的一个是“文件名”。 此列的每一行中包含的任何扩展名不同的文件名。 对于前。 'flower.jpeg', 'batman.mov',研究.pdf等

请给我建议的查询,可以帮助我删除的扩展名(与点也一样)从“文件名”列的每一行。 这样我就可以只获取名称防爆。 “花”,“蝙蝠侠”,“学习”等

谢谢

Answer 1:

试试这个:

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

查看一个DEMO @ SQLFiddle.com



Answer 2:

测试的SQL Server上。 这显示了文件名不带扩展名,更改为更新/设置修改数据。

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

编辑:使用反向修正,所以当字段包含多个点它也适用。

在这里, 更新表的版本:

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


Answer 3:

我需要摆脱所有的扩展,即:名为.tar.gz或.txt.out。 这是我在SQL Server什么工作:

CREATE FUNCTION RemoveFileExt
(
    @fullpath nvarchar(500)
)
RETURNS nvarchar(500)
AS
BEGIN
    IF(CHARINDEX('.', @fullpath) > 0)
    BEGIN
       SELECT @fullpath = SUBSTRING(@fullpath, 1, CHARINDEX('.', @fullpath)-1)
    END
    RETURN @fullpath
END;

CREATE FUNCTION RemoveFileExtAll
(
    @fullpath nvarchar(500)
)
RETURNS nvarchar(500)
AS
BEGIN
    IF(CHARINDEX('.', @fullpath) > 0)
    BEGIN
        SELECT @fullpath = dbo.RemoveFileExt(@fullpath)
    END
    RETURN @fullpath
END;

select dbo.RemoveFileExtAll('test.tar.gz');

OUTPUT> test

作为奖励,从在Linux或Windows的完全合格的路径得到的只是基本名称:

CREATE FUNCTION GetBaseName
(
    @fullpath nvarchar(500)
)
RETURNS nvarchar(500)
AS
BEGIN
    IF(CHARINDEX('/', @fullpath) > 0)
    BEGIN
       SELECT @fullpath = RIGHT(@fullpath, CHARINDEX('/', REVERSE(@fullpath)) -1)
    END
    IF(CHARINDEX('\', @fullpath) > 0)
    BEGIN
       SELECT @fullpath = RIGHT(@fullpath, CHARINDEX('\', REVERSE(@fullpath)) -1)
    END
    RETURN @fullpath
END;

select dbo.GetBaseName('/media/drive_D/test.tar.gz');

OUTPUT> test.tar.gz

select dbo.GetBaseName('D:/media/test.tar.gz');

OUTPUT> test.tar.gz

select dbo.GetBaseName('//network/media/test.tar.gz');

OUTPUT> test.tar.gz


Answer 4:

这里是返回所期望的结果简单的SELECT语句:

 SELECT  [Filename], SUBSTRING([Filename], 1, charindex('.',[Filename])-1) as [New name] FROM [Table]


文章来源: Remove extensions from filename
标签: sql tsql