本帖最后由 qidizi 于 2014-01-14 18:50:13 编辑

解决方案 »

  1.   

    INSERT INTO `test` VALUES ('-1', '0');把这些单引号去掉。
    注意引号代表的不同数据类型含义。
      

  2.   

    这个问题不是插入数据有问题,而是这个计算为什么就简单的这样处理呢?看结果.:18446744073709551615
    按一般聪明的语言来说,对于这块的考虑是比较充足的,但是mysql却就简单的一个-1+0就出现问题?这也太说不过去了吧?不明白在什么实现问题上有困难?几个int相加还得考虑类型相同?
      

  3.   

    这是因为你定义字段为unsigned造成的
      

  4.   


    SELECT ('-1'+'0') as i 结果是-1
    SELECT ('-1'+0) as i 结果是 -1
    SELECT (''+0) as i 结果是0
    SELECT (''+ (-1) ) as i 结果是 -1
      

  5.   

    应该这样查询吧。select (cast(ui as signed) + i) as sum from test;
      

  6.   

    select ( i+convert(ui,signed) ) as c  from test
    这样写就正常了,看来mysql真的就是简单的操作内存相加了.
    SELECT CONVERT( 1 , UNSIGNED ) + convert(-1,signed)
    但这却是正常的.