SQL server中从字符串中截取固定位置的子字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 截取的子字符串

猜你喜欢

转载自blog.csdn.net/lanxingbudui/article/details/88048295