从文件名中删除扩展名

时间:2012-06-28 09:25:09

标签: sql tsql

我正在使用SQL。

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

请建议我查询,这可以帮助我从文件名的每一行删除扩展名(以及点)。柱。所以我只能取名Ex。 ' flower',' batman',' study'等

由于

5 个答案:

答案 0 :(得分:33)

试试这个:

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

<强> View For a DEMO @ SQLFiddle.com

答案 1 :(得分:10)

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

SELECT left([FileName], len([FileName]) - charindex('.', reverse([FileName]))) 
  FROM tblDemo
使用“反向”修改

已修改,因此当字段包含多个点时,它也可以使用。

此处更新表版本:

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

答案 2 :(得分:2)

我需要删除所有扩展名,即.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

答案 3 :(得分:0)

这是一个简单的select语句,返回所需结果:

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

答案 4 :(得分:0)

在 MySQL 中,这对我有用。

In the ConfigureServices(IServiceCollection services)
{
  services.AddAutoMapper(typeof(Startup));
}