也不知道我的朋友怎么又这么多奇怪的需求
他的新要求是:若某个字符串里,包含多个某符号或者字符,截取这个字符串的第n个特殊符号之前的字符
代码如下
create function szg_substr(@str varchar(1000),@punctuation char(1),@wantindex int) returns varchar(1000) as begin declare @resultstr varchar(1000) set @resultstr = @str declare @count int, ---定义变量 记录循环次数 @index int ---定义变量 记录分号所在的下标的位置 set @count=0 ---为变量赋初值 set @index=0 ---为变量赋初值 while (@count<@wantindex) begin set @count=@count+1 ---循环次数加1 set @index = @index + convert(int, CHARINDEX(@punctuation,@str)) ---记录下标(累加) set @str = SUBSTRING(@str, CHARINDEX(@punctuation,@str)+1,len(@str)- CHARINDEX(@punctuation,@str)) --每找到一个分号,就将字符串从 分号截取,留后半部分 end set @resultstr=SUBSTRING(@resultstr,0, @index) return @resultstr end
嗯,他说还是很好用的。我很欣慰~