declare @StrAll varchar(8000), @StrFind varchar(8000), @I int
set @StrAll = replicate('A', 10) + replicate('B', 11) + replicate('C', 12) + replicate('D', 13)
set @StrFind = 'C'
set @I = 0
while charindex(@StrFind, @StrAll) <> 0
begin
set @StrAll = right(@StrAll, len(@StrAll) - charindex(@StrFind, @StrAll))
set @I = @I + 1
end
print @I

解决方案 »

  1.   


    --设要检查的表为T,字段为s,为简化问题,设表中记录只有一行:declare @s varchar(10)
    declare @i int
    declare @n int
    declare @t table ( s char, n int)
    set @s='abc'   --要检查字段的字串,这里赋值仅为说明问题。
    set @i=1
    while @i<=len(@s)
        begin
            select top 1 @n=len(s)-len(replace(s,substring(@s,@i,1),'')) from T
            insert @t select substring(@s,i,1),@n
            set @i=@i+1
        end
    select * from @t
      

  2.   

    Declare @i int,@j int,@k int
    Declare @Test varchar(3000)
    Select @Test = 'fdsf[upload=1]fdsfds[/upload]fdsffdsf[upload=2]fdsfds[/upload]fdsf'+
    'fdsf[upload=3]fdsfds[/upload]fdsffdsf[upload=4]fdsfds[/upload]fdsf'+
    'fdsf[upload=5]fdsfds[/upload]fdsffdsf[upload=6]fdsfds[/upload]fdsf'
    Select @i =0,@j=0
    while(@i < Len(@Test))
    Begin
    if Charindex('[upload',@Test,@i) > 0 and Charindex('[/upload]',@Test,@i) > 0 
    and Charindex('[upload',@Test,@i) < Charindex('[/upload]',@Test,@i)
    Select @j = @j +1,@i = Charindex('[/upload]',@Test,@i)+1
    Else
    Select @i = Len(@Test)
    End
    select @j