我有一个表,其中有一列包含整个文件名,数据如下所示:
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
现在我想提取文件扩展名,例如 .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
但是 T-SQL 没有 LastIndexOf()
函数。如何简单地剪切子字符串?
最佳答案
您可以通过以下方式获取扩展:
select reverse(left(reverse(FilePath), charindex('.', reverse(FilePath)) - 1))
但是,我建议您首先检查名称中是否有 '.'
:
select (case when FilePath like '%.%'
then reverse(left(reverse(FilePath), charindex('.', reverse(FilePath)) - 1))
else ''
end) as Extension
关于sql - T-SQL 从列中获取文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16783026/