如何查询对比 谢谢表1
ID 相关
1  ABBBBAAAABBABBAB
2  BBABABABAAAABABABBAB
...............
条件见A放B 见B放A  
见AAAA停止 等到出现B时继续开始
见BBBB停止 等到出现A时继续开始如正确用1代表 错误用2代表 如停止用3代表,
例如上面表11   ABBBBBAAAABBABBAB第1个开始
A 放入B  出现AB  结果正确    记录为1 
继续
AB 放入A 出现ABB 结果错误    记录为2
继续
ABB 放入A 出现ABBB 结果错误    记录为2
继续
ABBB 放入A 出现ABBBB 结果错误    记录为2
继续
ABBBB 停止  出现ABBBBB     记录为3
继续
ABBBBB 停止 出现ABBBBBA    记录为3
继续
ABBBBBA 此时出现A了,继续放入B对比 出现ABBBBBAA 结果错误 记录为2
.................
得结果ID 新
1  1222332......
2  2111111122231......

解决方案 »

  1.   

    有点没看明白。
    见A放B 见B放A  ,你结果中的1、2是怎么来的
      

  2.   

    create function dbo.ABConvert(@a varchar(1000))
    returns varchar(8000)
    as
    begin
    declare @c varchar(1000)
    declare @temp varchar(1000)
    declare @b int
    set @b =1
    set @c =''
    while (@b<len(@a))
    begin
    set @temp = left(@a,@b)

    if right(@temp,4) not in('BBBB','AAAA')
    begin
    if (right(@temp,1)='A')
    begin
    set @temp = @temp +'B'
    end
    else
    begin
    set @temp = @temp +'A'
    end
    end
    if right(@temp,4)='BBBB' or right(@temp,4)='AAAA'
    begin
    set @c = @c + '3'
    end
    else if @temp = left(@a,@b+1)
    begin
    set @c = @c + '1'
    end
    else
    begin
    set @c = @c + '2'
    end
    set @b = @b+1
    end return @c
    end----------------------------
    select pubs.dbo.ABConvert('BBABABABAAAABABABBAB')
    --------------------------------------------------------------------------------------------------
    2111111122231111211(所影响的行数为 1 行)
      

  3.   


    create function dbo.ABConvert(@a varchar(1000))
    returns varchar(8000)
    as
    begin
        declare @c varchar(1000)
        declare @temp varchar(1000)
        declare @b int
        set @b =1
        set @c =''
        while (@b<len(@a))
        begin
            set @temp = substring(@a,@b,len(@a))--借用7楼的!这里用substring应该更合适吧
            
            if right(@temp,4) not in('BBBB','AAAA')
            begin
                if (right(@temp,1)='A')
                    begin            
                        set @temp = @temp +'B'
                    end
                else
                    begin
                        set @temp = @temp +'A'
                    end
            end
            if right(@temp,4)='BBBB' or right(@temp,4)='AAAA'
                begin
                    set @c = @c + '3'
                end
            else if @temp = left(@a,@b+1)
                begin
                    set @c = @c + '1'
                end
            else
                begin
                    set @c = @c + '2'        
                end
                set @b = @b+1
        end    return @c
    end----------------------------
    select dbo.ABConvert('BBABABABAAAABABABBAB')