代碼如下:
select sum(pb010)as pb010,sum(pb011)as pb011,
sum(pb012)as pb12,
(pa003+pb027)as pa003  from dgmocpb inner join  dgmocpa on dgmocpb.pb001=dgmocpa.pa001  group by (pa003+pb027)出現如下錯誤:
訊息 8115,層級 16,狀態 8,行 1
轉換 varchar 到資料類型 numeric 時發生算術溢位錯誤。
pa003與pb027數據類型不同,如何處理?速度!!

解决方案 »

  1.   

    用cast语句显示转换,为了让语句更加可靠,最好加isnumeric函数判断。不过你得可靠性还是有问题的,数字就用数字字段不要用varchar字段。
      

  2.   

    (pa003+pb027) ==> rtrim(pa003)+rtrim(pb027)
      

  3.   

    cast(pa003 as int) --如果pa003是字符,把它转成数字
      

  4.   


    cast (字段 as 类型)
      

  5.   


    cast(pa003 as int)
      

  6.   

    cast(字符串或变量类型 as 转化后的类型)
    convert(字符串类型,(转化后类型),(style))
      

  7.   

    cast (字段 as 类型)如果你是想用数字的和,把varchar的列转换为numeric再相加
    如果你是想用字符串相加,用rtrim(pa003)+rtrim(pb027)
      

  8.   


    试一下select 
    sum(pb010)as pb010,
    sum(pb011)as pb011, 
    sum(pb012)as pb12, 
    (cast(pa003 as int)+pb027)as pa003 
     from dgmocpb inner join  dgmocpa on dgmocpb.pb001=dgmocpa.pa001  
    group by (cast(pa003 as int)+pb027) 
      

  9.   

    cast (字段或者值 as 类型)