Sql 在特定数据出现后提取字符串

Sql 在特定数据出现后提取字符串,sql,string,Sql,String,我有以下字符串,其长度随数据库和表名的不同而变化: [servername].[databasename].[dbo].[tablename.csv] 我只想提取“[dbo]”之后“.csv]”之前的表名 任何帮助都将不胜感激。[tablename在这里!从sys.tables中选择LEFT(name,len(name)-4),其中名称“%.csv”Hi deterministicFail,感谢您的快速回复,但是,我在执行时得到的结果是“[servername].[databasename].[

我有以下字符串,其长度随数据库和表名的不同而变化:

[servername].[databasename].[dbo].[tablename.csv]

我只想提取“[dbo]”之后“.csv]”之前的表名


任何帮助都将不胜感激。

[tablename在这里!从sys.tables中选择LEFT(name,len(name)-4),其中名称“%.csv”Hi deterministicFail,感谢您的快速回复,但是,我在执行时得到的结果是“[servername].[databasename].[tablename]。这只排除了最后一部分,即“csv”“正是我所需要的。谢谢你,穆坤!
declare @str varchar(200) = '[servername].[tablename].[dbo].[tablename.csv]'

select substring(@str,(PATINDEX('%dbo%',@str)+6), 
(PATINDEX('%.csv%', @str) - (PATINDEX('%dbo%',@str)+6)))