用于还原作业的SQL Server 2008 R2 Patindex

时间:2013-11-19 03:41:55

标签: sql-server-2008-r2

我正在尝试编写一个脚本来获取文件名,并从名称中获取数据库名称。

MSSQLNET_acap_439_FULL_20131117_020001.bak

这就是它的样子,我希望acap_439部分作为数据库名称。

字符串有点像这样,但不完全是我要找的东西。我没有做很多SQL工作作为网络人员,所以我迷路了。

select @dbName = left(@filename,datalength(@filename) - patindex('%_bd_%',reverse(@filename))-3)

select @dbName = left(@filename,datalength(@filename) - patindex('%_LLUF_%',reverse(@filename))-3)

只是不确定去哪里,我相信有人可以看看这个并说bam,这就是你做的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

规则究竟是什么?你需要砍掉最右边的25个字符,最左边的9个字符吗?

我无法记住SQL Server中的LENGTH或LEN,但这会给你你想要的东西吗?

set @dbname = LEFT(@filename,LEN(@filename) - 25)
set @dbname = RIGHT(@dbname,LEN(@dbname) - 9)

(分两步完成以避免错综复杂的嵌套函数)