我正在使用SQL。
在表tblDemo中,其中一列是' FileName'。此列的每一行包含具有任何扩展名的不同文件名。 对于前者' flower.jpeg',' batman.mov',study.pdf等。
请建议我查询,这可以帮助我从文件名的每一行删除扩展名(以及点)。柱。所以我只能取名Ex。 ' flower',' batman',' study'等
由于
答案 0 :(得分:33)
试试这个:
UPDATE TableName
SET FileName = REVERSE(SUBSTRING(REVERSE(FileName),
CHARINDEX('.', REVERSE(FileName)) + 1, 999))
答案 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));
}