在一个视图中我想实现加法运算,其中在参加运算一个字段中有部分值显示为NULL,这样部分加法结果会显示不出来。我用CASE 语句将其为NULL的变为0,可是有错误。我该怎么办呢?如:
a1,a2,a3,a4为 int 型select a1,a2,a3,
       case a4 when null then 0 
       else a1+a2+a4 end as a5
    from table1
a4字段中部分值显示为null,这样写不对吗?

解决方案 »

  1.   

    select a1,a2,a3,(a1+a2+isNull(a4,0)) as a5
        from table1
      

  2.   

    select a1,a2,a3,
           a1+a2+isnull(a4,0) as a5
        from table1
      

  3.   

    樓主的意思是 if a4 is null a5=0嗎?可以再說更明白一點。
      

  4.   

    if a4 is null a4=0ISNULL
    使用指定的替换值替换NULL。
      

  5.   

    select a1,a2,a3,
           case a4 is null then 0 
           else a1+a2+a4 end as a5
        from table1这样应该可以了。
      

  6.   

    null是非法的数据
    要转换成合法的数据才能计算
      

  7.   

    CASE 语法有误,改成这样试试select a1,a2,a3,
           case  when a4 is null then 0 
           else a1+a2+a4 end as a5
        from table1
      

  8.   

    select a1,a2,a3,(a1+a2+isNull(a4,0)) as a5
        from table1
      

  9.   

    谢谢了各位,
    select a1,a2,a3,(a1+a2+isNull(a4,0)) as a5
        from table1
    这样可以了。