比如有一串数字123456789
求它们的和,select sum(1+2+3+4+5+6+7+8+9)
我想问的就是如何把这一串数字一项一项的拆分开,而不用定义9个变量来求和
希望各位指点~~~~

解决方案 »

  1.   

    create table tb(col varchar(20))
    insert tb select '123456789'select top 20 id=identity(int,1,1) into # from syscolumns aselect sum(cast(col as int)) ss
    from
    (
      select col=substring(a.col,b.id,1)
      from tb a,# b
      where substring(a.col,b.id,1)<>''
    ) tdrop table tb,#
      

  2.   

    declare @str varchar(100), @p int
    set @str = '123456789'set @p = len(@str)
    while @p > 1
    begin
    set @str = stuff(@str, @p, 0, '+')
    set @p = @p - 1
    endexec ('select ' + @str)
      

  3.   

    Create function sum_zifu(@t varchar(200))
    returns int
    as
    begin
       declare @s int
       declare @sum int
       set @s=1
       set @sum=0
       while @s<=len(@t)
         Begin       
            set @sum=@sum+Convert(int,substring(@t,@s,1))
           set @s=@s+1
         End
      return @sum
    Endselect dbo.sum_zifu('123456789')
    drop function sum_zifu