版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanxingbudui/article/details/88048295
先上图:
在工作中遇到需要截取一段连接串中固定子串后面的值,如图所示:需要将方框中字符串中testdm截取出来。好处在于字符串的格式固定,并且用分号分割开来。
需要用到截取函数SUBSTRING()和获取字符串位置的函数CHARINDEX()
整个过程说明:
1、先查出来'Catalog='的位置下标;
2、再查'Catalog='的位置之后的第一个分号';'的位置下标
3、截取两个位置下标之间的字符
注:
截取函数SUBSTRING() 和获取字符串位置的函数CHARINDEX()具体使用方法请参考以下内容:
https://blog.csdn.net/lanxingbudui/article/details/87979290
https://blog.csdn.net/lanxingbudui/article/details/88024820
declare @connstr varchar(8000)
declare @new_database_name varchar(8000)
declare @start_seat int
declare @end_seat int
set @connstr ='Data Source=10.255.255.255;User ID=abc;Password=abc234;Initial Catalog=testdm;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;
'--以上三个连接串之一
set @start_seat = CHARINDEX('Catalog=',@connstr) --计算出现'Catalog='第一次的位置
set @end_seat = CHARINDEX(';',@connstr,CHARINDEX('Catalog=',@connstr)) --计算出现'Catalog='之后第一次';'的位置
set @new_database_name = SUBSTRING(@connstr,CHARINDEX('Catalog=',@connstr)+8,CHARINDEX(';',@connstr,CHARINDEX('Catalog=',
@connstr))-(CHARINDEX('Catalog=',@connstr)+8))
select @start_seat 起始位置,@end_seat 结束位置,@new_database_name 截取的子字符串