0
我得到一个varchar字段说的值为174,但是当我cast(field as decimal(3,1))
它给我总是99.9?我如何投射或将其转换为17.4?或者我必须在源代码级更改要以十进制输入的输入吗?Mysql投到十进制给99.9
我得到一个varchar字段说的值为174,但是当我cast(field as decimal(3,1))
它给我总是99.9?我如何投射或将其转换为17.4?或者我必须在源代码级更改要以十进制输入的输入吗?Mysql投到十进制给99.9
这是因为174
不能用小数点前2位和小数点后1位表示。 decimal(3,1)
小数点后的意思是“总共3位和1(3)
mysql> select cast('174' as decimal(3,1));
+-----------------------------+
| cast('174' as decimal(3,1)) |
+-----------------------------+
| 99.9 |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)
它给出了可以与示出的警告:
mysql> show warnings;
+---------+------+----------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------------------+
| Warning | 1264 | Out of range value for column 'cast('174' as decimal(3,1))' at row 1 |
+---------+------+----------------------------------------------------------------------+
1 row in set (0.00 sec)
除以10,并尝试数目再次:
mysql> select cast('174'/10 as decimal(3,1));
+--------------------------------+
| cast('174'/10 as decimal(3,1)) |
+--------------------------------+
| 17.4 |
+--------------------------------+
1 row in set (0.00 sec)
所以,如果我有我的领域为整我可以做同样的分我10再投是正确 – user5313398
是的'“174”/10'隐式注塑VARCHAR到一个int – PerlDuck
?。没有我的意思,如果该字段是整数例如那么除以10就是相同的答案吧? – user5313398