2014-10-07 75 views
0

我有以下的字符串根据数据库和表名称而变化的长度:。提取字符串

[服务器] [数据库名称] [DBO] [tablename.csv]

我想在“[dbo]”之后提取表名。“和“.csv”之前“。

任何帮助将不胜感激。

+0

[tablename here you go! 选择 \t LEFT(姓名,LEN(名称)-4) FROM SYS.TABLES WHERE \t名LIKE'%.csv格式 – deterministicFail 2014-10-07 07:44:32

+0

嗨deterministicFail,感谢你的快速回复,然而,结果我得到的时候执行是'[servername]。[databasename]。[dbo]。[tablename。'这只包括'csv]'的最后一部分。 – PKirby 2014-10-07 07:54:14

回答

1
declare @str varchar(200) = '[servername].[tablename].[dbo].[tablename.csv]' 

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

正是我所需要的。谢谢Mukund! – PKirby 2014-10-07 08:01:27