Sql 从文件名中删除扩展名
我正在使用SQL 在tblDemo表中,其中一列是“FileName”。此列的每一行都包含具有任何扩展名的不同文件名。 例如“flower.jpeg”、“batman.mov”、“study.pdf”等 请向我推荐一个查询,它可以帮助我从“filenames”列的每一行中删除扩展名(以及点)。这样我就只能拿到名字,比如“花”、“蝙蝠侠”、“书房”等等Sql 从文件名中删除扩展名,sql,tsql,Sql,Tsql,我正在使用SQL 在tblDemo表中,其中一列是“FileName”。此列的每一行都包含具有任何扩展名的不同文件名。 例如“flower.jpeg”、“batman.mov”、“study.pdf”等 请向我推荐一个查询,它可以帮助我从“filenames”列的每一行中删除扩展名(以及点)。这样我就只能拿到名字,比如“花”、“蝙蝠侠”、“书房”等等 感谢您在Sql Server上测试。显示不带扩展名的文件名,更改为Update/Set以修改数据 SELECT left([FileName],
感谢您在Sql Server上测试。显示不带扩展名的文件名,更改为Update/Set以修改数据
SELECT left([FileName], len([FileName]) - charindex('.', reverse([FileName])))
FROM tblDemo
编辑:使用反向修改,因此当字段包含多个点时也可以使用
这里是更新表的版本:
UPDATE Testing
Set [FileName] = left([FileName],
len([FileName]) - charindex('.', Reverse([FileName])))
试试这个:
UPDATE TableName
SET FileName = REVERSE(SUBSTRING(REVERSE(FileName),
CHARINDEX('.', REVERSE(FileName)) + 1, 999))
我需要去掉所有扩展,例如:.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
下面是一个简单的select语句,它返回所需的结果:
SELECT [Filename], SUBSTRING([Filename], 1, charindex('.',[Filename])-1) as [New name] FROM [Table]
在MySQL中,这对我来说很有用
set@file='test1.test2.test3.docx';
选择子字符串(@file,1,(长度(@file)-(长度(子字符串索引(@file,,-1))+1))作为“名称文件”,
子字符串_索引(@file,'.',-1)作为“扩展名”;
这将有助于-Ben/Jcis-在上述查询中修改什么,以考虑类似的情况:-“this.Is.My.Filename.Txt”@Jcis-非常感谢您的朋友。刚刚接受了约翰的回答,因为他首先回答了多点问题。你的答案绝对正确。你是冠军。成功了。它确实会从文件名中删除扩展名,即使文件名中有多个“点”。我会编辑一下你的帖子,以便将来对其他人有所帮助CHARINDEX@JohnWoo999是怎么回事?