mysql> SELECT (.1 + .2) = .3;+----------------+| (.1 + .2) = .3 |+----------------+| 1 |+----------------+
mysql> SELECT (.1E0 + .2E0) = .3E0;+----------------------+| (.1E0 + .2E0) = .3E0 |+----------------------+| 0 |+----------------------+
CREATE PROCEDURE p ()BEGINDECLARE i INT DEFAULT 0;DECLARE d DECIMAL(10,4) DEFAULT 0;DECLARE f FLOAT DEFAULT 0;WHILE i < 10000 DOSET d = d + .0001;SET f = f + .0001E0;SET i = i + 1;END WHILE;SELECT d, f;END;
+--------+------------------+| d | f |+--------+------------------+| 1.0000 | 0.99999999999991 |+--------+------------------+
mysql> SELECT .01 * .01;+-----------+| .01 * .01 |+-----------+| 0.0001 |+-----------+
mysql> SELECT ROUND(2.5), ROUND(-2.5);+------------+-------------+| ROUND(2.5) | ROUND(-2.5) |+------------+-------------+| 3 | -3 |+------------+-------------+
mysql> SELECT ROUND(2.5E0), ROUND(-2.5E0);+--------------+---------------+| ROUND(2.5E0) | ROUND(-2.5E0) |+--------------+---------------+| 2 | -2 |+--------------+---------------+
mysql> SET sql_mode='';Query OK, 0 rows affected (0.00 sec)mysql> CREATE TABLE t (i TINYINT);Query OK, 0 rows affected (0.01 sec)mysql> INSERT INTO t SET i = 128;Query OK, 1 row affected, 1 warning (0.00 sec)mysql> SELECT i FROM t;+------+| i |+------+| 127 |+------+1 row in set (0.00 sec)
mysql> SET sql_mode='STRICT_ALL_TABLES';Query OK, 0 rows affected (0.00 sec)mysql> CREATE TABLE t (i TINYINT);Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO t SET i = 128;ERROR 1264 (22003): Out of range value adjusted for column 'i' at row 1mysql> SELECT i FROM t;Empty set (0.00 sec)
mysql> SET sql_mode='';Query OK, 0 rows affected (0.01 sec)mysql> CREATE TABLE t (i TINYINT);Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO t SET i = 1 / 0;Query OK, 1 row affected (0.00 sec)mysql> SELECT i FROM t;+------+| i |+------+| NULL |+------+1 row in set (0.03 sec)
mysql> SET sql_mode='STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO';Query OK, 0 rows affected (0.00 sec)mysql> CREATE TABLE t (i TINYINT);Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO t SET i = 1 / 0;ERROR 1365 (22012): Division by 0mysql> SELECT i FROM t;Empty set (0.01 sec)
mysql> CREATE TABLE t SELECT 2.5 AS a, 25E-1 AS b;Query OK, 1 row affected (0.01 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> DESCRIBE t;+-------+-----------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-----------------------+------+-----+---------+-------+| a | decimal(2,1) unsigned | NO | | 0.0 | || b | double | NO | | 0 | |+-------+-----------------------+------+-----+---------+-------+2 rows in set (0.01 sec)
mysql> CREATE TABLE t (i INT, d DECIMAL, f FLOAT);mysql> INSERT INTO t VALUES(1,1,1);mysql> CREATE TABLE y SELECT AVG(i), AVG(d), AVG(f) FROM t;
mysql> DESCRIBE y;+--------+---------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+--------+---------------+------+-----+---------+-------+| AVG(i) | decimal(14,4) | YES | | NULL | || AVG(d) | decimal(14,4) | YES | | NULL | || AVG(f) | double | YES | | NULL | |+--------+---------------+------+-----+---------+-------+
文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




