ID NAME
1 E5638-DQ-QB-DE
2 101-1080EE-Q-QS-62SDC
.. ...通过查询SQL得出结果是(用-来拆分,从后来数据,取第4个开始到最前面的字符串):ID NAME
1 E5638
2 101-1080EE
.. ...
1 E5638-DQ-QB-DE
2 101-1080EE-Q-QS-62SDC
.. ...通过查询SQL得出结果是(用-来拆分,从后来数据,取第4个开始到最前面的字符串):ID NAME
1 E5638
2 101-1080EE
.. ...
declare @string varchar(100) = 'E5638-DQ-QB-DE'
select REVERSE(SUBSTRING(REVERSE(@string), CHARINDEX('-',REVERSE(@string))+1, LEN(@string)))拆分3个的话,语句会很长,就没全写出来,大致明白一下思路吧。也许别人还有更好答案。
ID NAME
1 A
2 B
3 C
. ..
查询效果是:
NAME
A B C ..
中间有一个空格
create table #ta(id int, Name varchar(50))
insert into #ta
select 1, 'E5638-DQ-QB-DE'
union select 2, '101-1080EE-Q-QS-62SDC'
--解决方案
select id,reverse(dbo.getstrofindex(reverse(Name),4,'-'))Name from #ta
/*
id Name
----------- --------
1 E5638
2 101-1080EE(2 行受影响)*/
--所用函数
CREATE function getstrofindex (@str varchar(8000),@index int ,@spit varchar(10))
returns varchar(8000)
as
begin
declare @next int
select @next =1
while (@index > @next )
begin
select @str = stuff(@str,1,charindex(@spit,@str),'')
select @next =@next +1
end
return @str
end