首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中转换为十进制

问在MySQL中转换为十进制
EN

Stack Overflow用户
提问于 2012-08-06 22:41:37
回答 5查看 194.9K关注 0票数 36

我尝试在MySQL中转换为小数,如下所示:

代码语言:javascript
复制
CAST((COUNT(*) * 1.5) AS DECIMAL(2))

我尝试将表中的行数(乘以1.5)转换为点后两位数的浮点数。

SQL代码:

代码语言:javascript
复制
 SELECT CONCAT(Guardian.title, ' ', 
               Guardian.forename, ' ', 
               Guardian.surname) AS 'Guardian Name', 
               COUNT(*) AS 'Number of Activities', 
               (COUNT(*) * 1.5) AS 'Cost'
 FROM Schedule
 INNER JOIN Child ON Schedule.child_id = Child.id
 INNER JOIN Guardian ON Child.guardian = Guardian.id
 GROUP BY Guardian
 ORDER BY Guardian.surname, Guardian.forename ASC

它会产生一个错误:

代码语言:javascript
复制
#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near 'CAST((COUNT(*) * 1.5) AS DECIMAL(12,2))' at line 1.

再试一次,这个造型也不起作用:

代码语言:javascript
复制
 SELECT CONCAT(Guardian.title, ' ', 
               Guardian.forename, ' ', 
               Guardian.surname) AS 'Guardian Name', 
               COUNT(*) AS 'Number of Activities', 
               CAST((COUNT(*) * 1.5) AS DECIMAL(8,2)) AS 'Cost'
 FROM Schedule
 INNER JOIN Child ON Schedule.child_id = Child.id
 INNER JOIN Guardian ON Child.guardian = Guardian.id
 GROUP BY Guardian
 ORDER BY Guardian.surname, Guardian.forename ASC

如何使用mysql将整数转换为小数?

EN

回答 5

Stack Overflow用户

发布于 2012-08-06 22:57:03

来自MySQL文档:Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC

在标准SQL中,语法DECIMAL(M)等同于DECIMAL(M,0)

因此,您将转换为具有2个整数位和0个小数位的数字。试着这样做:

代码语言:javascript
复制
CAST((COUNT(*) * 1.5) AS DECIMAL(12,2)) 
票数 36
EN

Stack Overflow用户

发布于 2013-12-07 12:54:53

MySQL转换为小数:

将纯整数转换为小数:

代码语言:javascript
复制
select cast(9 as decimal(4,2));       //prints 9.00

将8/5的整数转换为小数:

代码语言:javascript
复制
select cast(8/5 as decimal(11,4));    //prints 1.6000

将字符串转换为十进制:

代码语言:javascript
复制
select cast(".885" as decimal(11,3));   //prints 0.885

将两个整型变量转换为十进制

代码语言:javascript
复制
mysql> select 5 into @myvar1;
Query OK, 1 row affected (0.00 sec)

mysql> select 8 into @myvar2;
Query OK, 1 row affected (0.00 sec)

mysql> select @myvar1/@myvar2;   //prints 0.6250

将十进制转换回字符串:

代码语言:javascript
复制
select cast(1.552 as char(10));   //shows "1.552"
票数 29
EN

Stack Overflow用户

发布于 2012-08-06 23:03:37

DECIMAL有两个部分:Precision和Scale。因此,查询的一部分将如下所示:

代码语言:javascript
复制
CAST((COUNT(*) * 1.5) AS DECIMAL(8,2))

Precision表示为值存储的有效位数。

Scale表示小数点后可存储的位数。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11830509

复制
相关文章

相似问题

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