declare @con1 varchar(100)
declare @a table(a varchar(10))
declare @i intset @con1='abcdefghijk'
while @i<len(@con1)/3
begin
insert  @a select substring(@con1,@i*3+1,3)
set @i=@i+1
end
select * from @a

解决方案 »

  1.   

    declare @con1 table(a char(3))
    declare @strs varchar(1000)
    set @strs='abcdefghijk'
    declare @i int
    set @i=3
    while @i<=len(@strs)
    begin
    insert into @con1
    select substring(@strs,1,@i)
    select @strs=substring(@strs,4,len(@strs)-3)
    end
    select * from @con1
      

  2.   

    Declare @con1 Varchar(100)
    Set @con1='abcdefghijk'
    Select TOP 100 ID = Identity(Int, 0, 1) Into #T From SysColumns A, SysObjects B
    Select
    Substring (@con1,ID*3+1,3) As con2
    From #T
    Where ID <= Len(@con1) / 3
    Drop table #T--Result
    /*
    con2
    abc
    def
    ghi
    jk
    */
      

  3.   

    chuifengde(树上的鸟儿)笔误忘了把@i赋初值为0了,他的也正确!
      

  4.   

    create function test_f(@name varchar(4000))
    returns @ta table(name varchar(5))
    as
    begin
    declare @i int
    select @i=len(@name)/3
    while @i>0
    begin
    insert @ta values(left(@name,3)) 
    select @name=stuff(@name,1,3,''),@i=@i-1
    end
    return
    endselect * from dbo.test_f('abcdefghijk')name
    -----
    abc
    def
    ghi(3 行受影响)