视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysqlfloatdouble类型_MySQL
2020-11-09 19:58:43 责编:小采
文档


1.float类型

float列类型默认长度查不到结果,必须指定精度,

比如 numfloat,insert intotable (num) values (0.12); select* from table where num=0.12的话,empty set。

num float(9,7),insert intotable (num) values (0.12); select* from table where num=0.12的话会查到这条记录。

mysql> create table tt

-> (

-> numfloat(9,3)

-> );

Query OK, 0 rows affected (0.03 sec)

mysql> insert into tt(num)values(1234567.8);

ERROR 12 (22003): Out of range value for column 'num' at row 1

注:超出字段范围,无法插入

mysql> insert into tt(num)values(123456.8);Query OK, 1 row affected (0.00 sec)

mysql> select* fromtt;

+------------+

| num|

+------------+

| 123456.797 |

+------------+

1 row in set (0.00 sec)

注:小数位数不够,自动补齐,但是存在一个问题就是如上的近似值。

mysql> insert into tt(num)values(123456.867);Query OK, 1 row affected (0.04 sec)

mysql> select * fromtt;

+------------+

| num|

+------------+

| 123456.797 |

| 123456.797 |

| 123456.867 |

+------------+

3 rows in set (0.00 sec)

mysql> select* from tt wherenum=123456.867;

+------------+

| num|

+------------+

| 123456.867 |

+------------+

1 row in set (0.00 sec)

mysql> insert into tt(num)values(2.8);Query OK, 1 row affected (0.04 sec)

mysql> select * fromtt;

+------------+

| num|

+------------+

| 123456.797 |

| 123456.797 |

| 123456.867 |

|2.800 |

+------------+

4 rows in set (0.00 sec)

mysql> select* from tt wherenum=2.8;

+-------+

| num|

+-------+

| 2.800 |

+-------+

1 row in set (0.00 sec)

mysql> insert into tt(num)values(2.888888);Query OK, 1 row affected (0.00 sec)

mysql> select* fromtt;

+------------+

| num|

+------------+

| 123456.797 |

| 123456.797 |

| 123456.867 |

|2.800 |

|2.8 |

+------------+

5 rows in set (0.00 sec)

注:小数位数超了,自动取近似值。

--------------------------------------------------------------------------------------

2.double类型

mysql> create table tt(

-> numdouble(9,3)

-> );

Query OK, 0 rows affected (0.02 sec)

mysql> insert into tt(num) values(234563.9);Query OK, 1 row affected (0.00 sec)

mysql> select * fromtt;

+------------+

| num|

+------------+

| 234563.900 |

+------------+

1 row in set (0.00 sec)

mysql> insert into tt(num) values(2345623.2);

ERROR 12 (22003): Out of range value for column 'num' at row 1

mysql> insert into tt(num) values(234563.2);

Query OK, 1 row affected (0.00 sec)

mysql> select* fromtt;

+------------+

| num|

+------------+

| 234563.900 |

| 234563.200 |

+------------+

2 rows in set (0.00 sec)

mysql> insert into tt(num) values(2.8);Query OK, 1 row affected (0.00 sec)

mysql> select* from tt;

+------------+

| num|

+------------+

| 234563.900 |

| 234563.200 |

|2.800 |

+------------+

3 rows in set (0.00 sec)

FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。

下载本文
显示全文
专题