--创建存储过程
create procedure p
@str varchar(20)
asdeclare @num varchar(20),@nums varchar(50),@i int,@tmp int
select @[email protected],@i=1,@nums='',@tmp=0
while @i<=len(@num)
begin
      if substring(@num,@i,1)<>substring(@num,@i+1,1)
      begin
            set @[email protected]+1
            if @tmp>=3
             set @[email protected]+'  '+substring(@num,@i-1,1)+'出现了'+convert(varchar,@tmp)+'次'
            set @tmp=1
      end
      else
      begin
           select @[email protected]+1,@[email protected]+1
      end
end
if @nums=''
select '没有重复出现超过3次的数字'
else
select @numsgo--测试
exec p '345444322222'--结果
/*                                                   
-------------------------------------------------- 
  4出现了3次  2出现了5次(所影响的行数为 1 行)
*/

解决方案 »

  1.   

    vivianfdlpw() ,你的方法可以用,但是太麻烦,我有几十万乃至几百万的数据,这样速度太慢了,还有没有别的办法呢
      

  2.   

    http://www.cnblogs.com/waxdoll/archive/2005/04/21/142765.html
    T-SQL中的正则表达式 
    判断有大于三连续相同数字的正则 (\d)(\1){2,}
    我研究去了- -;;
      

  3.   

    说的明白点,就是从几百万的数据中删除连续3个(或者大于3 个)数字相同的数,比如说:22234234234,出现了3个2,就删除这个数22234234234,高手来,vivianfdlpw()的方法可以,不过我得写一个游标,那样速度太慢了
      

  4.   

    告诉你一个好的方法:
    delete from table where table_field like '%000%'
    delete from table where table_field like '%111%'……
    简单又快!!!
      

  5.   

    LSL_winnie(麒麟),你太牛了,说的太对了,我怎么没有想到,就是多写几条语句,谢谢,分已经加上,感谢大家对我的帮助