比如现在有个表A,里边三个字段b、c、dselect max(b),max(c) from A group by d
没问题,结果正确select max(b)+max(c) as x from A group by d
当b、c都不为''的时候,没问题
一旦b、c有一个是'',那么相加得到的结果就是''
(b\c字段不是null,insert的时候赋的是'')
请教各位高手,这是怎么回事呢?呵呵~

解决方案 »

  1.   

    select isnull(max(b),0)+isnull(max(c),0) as x from A group by d 
      

  2.   

    select 100+null/*NULL(1 行受影响)*/
      

  3.   

    select 100+null /*NULL (1 行受影响)*/
      

  4.   

    兄弟还是有一事不明,varchar字段中,null和''一样吗?是否都能用isnull来判断?
      

  5.   

    当然不一样 NULL是未知 不是值 ''是值 
    我们经常会用 isnull(字段名,'')
      

  6.   

    不一样 ''用case when 吧 
    ISNULL
    使用指定的替换值替换 NULL。语法
    ISNULL ( check_expression , replacement_value ) 参数
    check_expression将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。replacement_value在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
      

  7.   

    isnull(字段名,'')是为了防止 'a'+null =null这种情况发生 
    用了a+isnull(字段名,'') =a
      

  8.   

    对呀,那我的字段应该不是null呀,呵呵~
    我insert的时候确实是赋的'',但+出来为什么就变成''了呢~就是说 a+'' 应该等于 a ,而不等于'',对吧?呵呵~
      

  9.   

    insert into A (b,c,d) values ('','','')
    这样的语句,b\c\d应该都是'',而不是null吧?