none
sql2005 中varchar to int如何转 RRS feed

  • 问题

  • 我的phone05里有一列费用小计为0.00,0.11,0.02,0.03,0.00,0.07等的值的varchar列,我现在想求和,要先把它转换成int的类型,但我用select sum(convert(int, 费用小计)) from phone05时,报错为消息 245,级别 16,状态 1,第 1 行
    在将 nvarchar 值 '0.00' 转换成数据类型 int 时失败。请问我要如何处理

    2011年7月7日 11:06

答案

  • declare @phone05 table (colname varchar(8))
    insert into @phone05
    select '0.00' union all
    select '0.11' union all
    select '0.02' union all
    select '0.03' union all
    select '0.00' union all
    select '0.07'
    
    --查询
    select * from @phone05
    /*
    colname
    --------
    0.00
    0.11
    0.02
    0.03
    0.00
    0.07
    */
    
    --求和的第一种方式
    select result1=sum(cast(colname as decimal(18,2))) from @phone05
    
    --求和的第二种方式
    select result2=sum(colname+0.00) from @phone05
    
    --求和的第三种方式
    select result3=sum(convert(decimal(18,2),colname)) from @phone05
    /*
    result1
    ---------------------------------------
    0.23
    
    (1 row(s) affected)
    
    result2
    ---------------------------------------
    0.23
    
    (1 row(s) affected)
    
    result3
    ---------------------------------------
    0.23
    
    (1 row(s) affected)
    */ 
    

    2011年7月8日 7:22
    版主

全部回复

  • Should convert to decimal type.
    2011年7月7日 13:07
  • Should convert to decimal type.

    thanks,I find numeric and decimal type
    2011年7月8日 2:19
  • declare @phone05 table (colname varchar(8))
    insert into @phone05
    select '0.00' union all
    select '0.11' union all
    select '0.02' union all
    select '0.03' union all
    select '0.00' union all
    select '0.07'
    
    --查询
    select * from @phone05
    /*
    colname
    --------
    0.00
    0.11
    0.02
    0.03
    0.00
    0.07
    */
    
    --求和的第一种方式
    select result1=sum(cast(colname as decimal(18,2))) from @phone05
    
    --求和的第二种方式
    select result2=sum(colname+0.00) from @phone05
    
    --求和的第三种方式
    select result3=sum(convert(decimal(18,2),colname)) from @phone05
    /*
    result1
    ---------------------------------------
    0.23
    
    (1 row(s) affected)
    
    result2
    ---------------------------------------
    0.23
    
    (1 row(s) affected)
    
    result3
    ---------------------------------------
    0.23
    
    (1 row(s) affected)
    */ 
    

    2011年7月8日 7:22
    版主