当前位置: 代码迷 >> Sql Server >> replace疑难解决方法
  详细解决方案

replace疑难解决方法

热度:102   发布时间:2016-04-27 15:20:00.0
replace疑难
AB有以下组合:
AAA,BAA,ABA,AAB,BBB,ABB,BAB,BBA.
某个字符串中含有
1.1个BAA之后加A或BB或BAB(注意:BAA的反式是ABB)
例1-‘BAAA’‘BAABB’‘BAABAB’
2.N个BAA之后加A或BB或BAB
例2-‘BAABAAA’‘BAABAABAABB’‘BAABAABAABAABAABAB’...
现在处理:
1.对‘BAA’(包括1个或者N个)之后A或BB或BAB(只需处理一次)进行处理,换成字符C或CC或CCC。
2.对N个‘BAA’中的除了第一个‘BAA’进行处理,换成字符CCC.
以上过程中,不用处理的字符都保持原状。
-------
例1-‘BAAA’‘BAABB’‘BAABAB’
转换成
-‘BAAC’‘BAACC’‘BAACCC’
2.N个BAA之后加A或BB或BAB
例2-‘BAABAAA’‘BAABAABAABB’‘BAABAABAABAABAABAB’
转换成
-‘BAABAAC’‘BAACCCCCCCC’‘BAACCCCCCCCCCCCCCC’

不用replace可以达到该结果也行。求教于各位高手!



------解决方案--------------------
如果只保留第一个BAA倒简单了,创建以下函数(第一次创建用create function ,修改用alter function)
create function fun_str2( @str1 varchar(100))
returns varchar(100)
as
begin
declare @str2 varchar(100)
declare @t varchar(100)
declare @lenth int
declare @num int
set @t= ' '
set @num=1
select @lenth=len( ' '[email protected]+ ' ')-3
while @num <[email protected]
begin
set @[email protected]+ 'C '
set @[email protected]+1
end
return substring( ' '[email protected]+ ' ',1,3)[email protected]
end

select dbo.fun_str2( 'BAABAABABBB ')
-----------
BAACCCCCCCC
  相关解决方案