列1 列2
1 9999
2 5555555
3 1111111
4 123456789
5 555555
6 2222
7 98765432
查询列1呈的1、2、3、5、6.......这种又叠加字段!

解决方案 »

  1.   

    REPLICATE(left('9999',1),len('9999')) = ‘9999’
      

  2.   


    -- 使用 replace 也可以 
    create table test(id int , name varchar(20))
    go
    insert into test values
    (1, '9999'),
    (2, '5555555'),
    (3, '1111111'),
    (4, '123456789'),
    (5, '555555'),
    (6, '2222'),
    (7, '98765432')
    go
    select * from test 
    where replace(name,left(name,1),'') = ''
    go
    drop table test 
    go
    (7 行受影响)
    id          name
    ----------- --------------------
    1           9999
    2           5555555
    3           1111111
    5           555555
    6           2222(5 行受影响)
      

  3.   

    create function fnGet(@s varchar(150))
    returns int
    as
    begin
      declare @num int,@re int,@a char,@b char
      set @num=len(@s)
      set @a=''
      set @b=''
      set @re=0
      while(@num>0)
      begin
      set @b=@a
      set @a=substring(@s,@num,1)
      if @b<>''
      begin
       if @b<>@a
        begin
         set @re=1
         break
        end
      end
      set @num=@num-1
      end
      return @re
    end
    go
    create table test(id int , name varchar(20))
    go
    insert into test values(1,    '9999')
    insert into test values(2,    '5555555')
    insert into test values(3,    '1111111')
    insert into test values(4,    '123456789')
    insert into test values(5,    '555555')
    insert into test values(6,    '2222')
    insert into test values(7,    '98765432')
    go
    select * from test where dbo.fnGet(name)=0用个函数 实现 就行了