我使用的是SQL。
在表tblDemo,列中的一个是“文件名”。 此列的每一行中包含的任何扩展名不同的文件名。 对于前。 'flower.jpeg', 'batman.mov',研究.pdf等
请给我建议的查询,可以帮助我删除的扩展名(与点也一样)从“文件名”列的每一行。 这样我就可以只获取名称防爆。 “花”,“蝙蝠侠”,“学习”等
谢谢
我使用的是SQL。
在表tblDemo,列中的一个是“文件名”。 此列的每一行中包含的任何扩展名不同的文件名。 对于前。 'flower.jpeg', 'batman.mov',研究.pdf等
请给我建议的查询,可以帮助我删除的扩展名(与点也一样)从“文件名”列的每一行。 这样我就可以只获取名称防爆。 “花”,“蝙蝠侠”,“学习”等
谢谢
试试这个:
UPDATE TableName
SET FileName = REVERSE(SUBSTRING(REVERSE(FileName),
CHARINDEX('.', REVERSE(FileName)) + 1, 999))
查看一个DEMO @ SQLFiddle.com
测试的SQL Server上。 这显示了文件名不带扩展名,更改为更新/设置修改数据。
SELECT left([FileName], len([FileName]) - charindex('.', reverse([FileName])))
FROM tblDemo
编辑:使用反向修正,所以当字段包含多个点它也适用。
在这里, 更新表的版本:
UPDATE Testing
Set [FileName] = left([FileName],
len([FileName]) - charindex('.', Reverse([FileName])))
我需要摆脱所有的扩展,即:名为.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]