我有一个包含整个文件名的列的表,数据如下所示:
FilePath FileSize
------------------------------ --------
dsch2_chs_wyj.rar 694KB
AllInOneHash.rar 19KB
FilePropertyModifier.rar 12KB
jquery_1_7_api_chm_chs.rar 285KB
startupmgr.rar 38KB
JQueryTableExample_Edi.rar 33KB
hdpartioncalc_csharp.rar 49KB
XMLMenuTest.zip 3KB
Run Code Online (Sandbox Code Playgroud)
现在我想提取文件扩展名,比如.rar
插入到新表中.
INSERT INTO Attachment
(
Id,
[FileName],
ExtensionName,
StoredPath,
CreateOn,
UploaderIP,
DataBinary
)
SELECT ba.Id,
ba.Title,
'{Extension Name}',
ba.FilePath,
GETDATE(),
NULL,
NULL
FROM BlogAttachment ba
Run Code Online (Sandbox Code Playgroud)
但是T-SQL没有LastIndexOf()
功能.如何以简单的方式切割子串?
Gor*_*off 54
您可以通过以下方式获得扩展:
select reverse(left(reverse(FilePath), charindex('.', reverse(FilePath)) - 1))
Run Code Online (Sandbox Code Playgroud)
但是,我建议您首先检查'.'
名称中是否有:
select (case when FilePath like '%.%'
then reverse(left(reverse(FilePath), charindex('.', reverse(FilePath)) - 1))
else ''
end) as Extension
Run Code Online (Sandbox Code Playgroud)
SELECT CASE
WHEN filepath LIKE '%.%' THEN RIGHT(filepath, Len(filepath) -
Charindex('.', filepath))
ELSE filepath
END FilePath
FROM tbl1
Run Code Online (Sandbox Code Playgroud)