大概思路
Decalre @tmp varchar(100),
        @val varchar(10),
        @pos int
Select @tmp = @aa
While CharIndex(' ',@tmp)>0
Begin
  Select @pos = CharIndex(' ',@tmp)
  Select @val = Sunstring(@tmp,1,@pos-1)
  Print @val
  Select @tmp = Substring(@tmp,@pos+1,len(@tmp)-@pos)
End

解决方案 »

  1.   

    大概思路
    Decalre @tmp varchar(100),
            @val varchar(10),
            @pos int
    Select @tmp = @aa
    While CharIndex(' ',@tmp)>0
    Begin
      Select @pos = CharIndex(' ',@tmp)
      Select @val = Sunstring(@tmp,1,@pos-1)
      Print @val
      Select @tmp = Substring(@tmp,@pos+1,len(@tmp)-@pos)
    End
    Print @tmp
      

  2.   

    Decalre @tmp varchar(100),
            @val varchar(100),
            @pos int
    Select @tmp = @aa
    While CharIndex('@tmp')>0
    Begin
      Select @pos = CharIndex('@tmp')
      Select @val = Sunstring(@tmp,1,@pos-1)
      Print @val
      Select @tmp = Substring(@tmp,@pos+1,len(@tmp)-@pos)
    End
    Print @tmp
      

  3.   

    sqlserver 中没有数组,用临时表可以实现
    declare @aa varchar(20) , @sql varchar(1000)
    set @aa = '1 2 3 4 5 6 7 8 9 0'
    create table #t1(item varchar(20)) 
    select @sql =  'insert into #t1 values('''+REPLACE(@aa,' ',''') insert into #t1 values(''')+''')' 
    exec (@sql)
    select * from #t1
    ……
    drop table #t1
    go
      

  4.   

    create proc splitstr
    @str varchar(300),
    @ret table(s1 varchar(30)) OUTPUT
    AS
    BEGIN
      set @str=rtrim(ltrim(@str))
      while CharIndex(' ',@str)>0 
      begin
        insert @ret values(left(@str,CharIndex(' ',@str)-1))
        set @str=ltrim(right(@str,len(@str)-CharIndex(' ',@str)))
      end  
        insert @ret values(@str)
      RETURN
    END
      

  5.   

    create proc splitstr
    @str varchar(300),
    @ret table(s1 varchar(30)) OUTPUT
    AS
    BEGIN
      set @str=rtrim(ltrim(@str))
      while CharIndex(' ',@str)>0 
      begin
        exec('insert '+@ret+' values(left(@str,CharIndex(' ',@str)-1))')
        set @str=ltrim(right(@str,len(@str)-CharIndex(' ',@str)))
      end  
        exec('insert '+@ret+' values(@str)')
      RETURN
    END
      

  6.   

    create proc splitstr
    @str varchar(300),
    @ret table(s1 varchar(30)) OUTPUT
    AS
    BEGIN
      set @str=rtrim(ltrim(@str))
      while CharIndex(' ',@str)>0 
      begin
        exec('insert '+@ret+' values(left('+@str+',CharIndex('' '','+@str+')-1))')
        set @str=ltrim(right(@str,len(@str)-CharIndex(' ',@str)))
      end  
        exec('insert '+@ret+' values('+@str+')')
      RETURN
    END
      

  7.   

    sqlserver 中没有数组,用临时表可以实现
    declare @aa varchar(20) , @sql varchar(1000)
    set @aa = '1 2 3 4 5 6 7 8 9 0'
    create table #t1(item varchar(20)) 
    select @sql =  'insert into #t1 values('''+REPLACE(@aa,' ',''') insert into #t1 values(''')+''')' 
    exec (@sql)
    select * from #t1
    ……
    drop table #t1
    go
      

  8.   

    存进临时表,前几天刚学一招,现学现用
    create table #item(item varchar(20))
    go
    declare @a varchar(300)
    declare @sql nvarchar(500)
    set @a='1 2 3 4 5 6 7 8 9 0'
    set @a=ltrim(rtrim(@a))
    set @sql='insert into #item values('''+replace(@a,' ',''') insert into #item values(''')+''')'
    exec(@sql)
    select * from #item