使用SQL获取文件的扩展名?

use*_*567 15 sql sql-server sql-server-2005

可能重复:
在SQL Server中获取子字符串

假设我在数据库表的列中有MyImage.pngMyDoc.doc等等.

我怎样才能获得文件扩展名?

Joe*_*eph 37

试试这个:

declare @str varchar(20)='MyDoc.doc';
select reverse(left(reverse(@str),charindex('.',reverse(@str))-1))
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

  • 这怎么会处理`MyCompany.MyProject.SomeCodeFile.cs` ?? (3认同)
  • 如果@str不包含'.'则失败 (3认同)
  • 很好的答案,但不支持剥离querysrings,如"index.html?id = 1".但除此之外,还有很好的答案:-) (2认同)

pra*_*een 8

试试这个 :

select parsename(filename,1) from yourTable
Run Code Online (Sandbox Code Playgroud)

sqlfiddle演示


Tim*_*ter 5

使用字符串函数:

SELECT Extension =
   Right([Name],
        CHARINDEX('.',
                  REVERSE([Name]))-1)
FROM dbo.Files
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

  • 这在没有扩展名的文件名上中断:`传递给正确函数的长度参数无效。` (4认同)