有字符串是类似这种格式的“AAOAABCAADABOOAAEDCOOOOO"
我想找到这个字符串的最后面的O的连续字符串(上面的例子中,最后的连续O的字符串为OOOOO)的起始位置。请高手帮忙!

解决方案 »

  1.   

    得出位置
    declare @s nvarchar(100)
    set @s='AAOAABCAADABOOAAEDCOOOOO'
    select len(@s)-patindex('%[^O]%',reverse(@s))+2
      

  2.   

    declare @s nvarchar(100)
    set @s='AAOAABCAADABOOAAEDCOOOOOAA'--结尾不为0
    select  len(stuff(stuff(reverse(@s),1,charindex('O',reverse(@s))-1,''),1,
    patindex('%[^O]%',stuff(reverse(@s),1,charindex('O',reverse(@s))-1,'')),''))+2
      

  3.   

    偷个机,既然是说连续那么则至少2个declare @s varchar(50)
    set @s='AAOAABCAADABOOAAEDCOOOOOAA'
    select charindex('OO',@s)
      

  4.   

    declare @s varchar(50) 
    set @s='AAOAABCAADABOOAAEDCOOOOOAA' 
    select charindex('OO',@s)
      

  5.   


     
    declare @s varchar(50) 
    set @s='AAOAABCAADABOOAAEDCOOOOOAA' 
    select len(@s)-charindex('OO',reverse(@s))-patindex('%[^O]%', reverse(left(@s,len(@s)-charindex('OO',reverse(@s)))))+2
      

  6.   

    declare @a varchar(100),@i int,@str varchar(800)
    select @a='AAOAABCAADABOOAAEDCOOOOO'
    set @i=0
    set @str=''
    while @i<(select len(@a))
    begin
    set @i=@i+1
    select @str=right(@a,@i)
    if left(@str,1)<>'o'
    break
    end
    select 最后一个o的位置=len(@a)-len(@str)+1