大家好,请教个问题:
mysql> SELECT 1093663.00-1093662.99;
+-----------------------+
| 1093663.00-1093662.99 |
+-----------------------+
|                  0.01 | 
+-----------------------+
1 row in set (0.00 sec)mysql> SELECT 1093663.00-1093662.99=0.01;
+----------------------------+
| 1093663.00-1093662.99=0.01 |
+----------------------------+
|                          0 | 
+----------------------------+
1 row in set (0.00 sec)这是为什么呢?两个数相减的结果显示0.01。可是用等号去比的时候,却显示不相等了?
mysql> select version();
+-----------+
| version() |
+-----------+
| 4.0.16    | 
+-----------+
1 row in set (0.00 sec)

解决方案 »

  1.   

    mysql> SELECT (1093663.00-1093662.99)=0.01;
    +------------------------------+
    | (1093663.00-1093662.99)=0.01 |
    +------------------------------+
    |                            1 | 
    +------------------------------+
    1 row in set (0.00 sec)mysql> select version();
    +------------+
    | version()  |
    +------------+
    | 5.1.45-log | 
    +------------+
    1 row in set (0.00 sec)在5.1.45的版本里再次尝试,是正常的。
    可是不明白为什么在4.0.16里会那样设计?希望了解的同学帮忙解答下。
      

  2.   

    SELECT 1093663.00-1093662.99=0.01;这个中你没有加()啊。
      

  3.   

    mysql> SELECT (1093663.00-1093662.99)=0.01;
    +------------------------------+
    | (1093663.00-1093662.99)=0.01 |
    +------------------------------+
    |                            0 | 
    +------------------------------+
    1 row in set (0.00 sec)
    还是这样
      

  4.   

    奇怪:
    SELECT (1093663.00-1093662.99)=0.01;我这执行怎么就返回  '1'呢