首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql转换为十进制,则为99.9

Mysql转换为十进制,则为99.9
EN

Stack Overflow用户
提问于 2016-06-07 17:42:55
回答 1查看 248关注 0票数 0

我得到了一个varchar字段,比如值为174,但是当我cast(field as decimal(3,1))时,它总是给我99.9?我怎样才能把它转换成17.4?或者我必须在源级更改输入,以十进制本身作为输入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-07 17:47:25

这是因为174不能用小数点之前的2位和小数点之后的1位来表示。decimal(3,1)的意思是“总计3位,小数点之后的1位。

代码语言:javascript
复制
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)

它给出了一个警告,可以用以下方式显示:

代码语言:javascript
复制
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,然后重试:

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37685929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档