MySQL中的十进制转换

MySQL中的十进制转换,mysql,casting,decimal,Mysql,Casting,Decimal,我试图在MySQL中转换为十进制,如下所示: CAST((COUNT(*) * 1.5) AS DECIMAL(2)) CAST((COUNT(*) * 1.5) AS DECIMAL(8,2)) 我试图将表中的行数(乘以1.5)转换为一个在点后有两位数字的浮点数 SQL代码: SELECT CONCAT(Guardian.title, ' ', Guardian.forename, ' ', Guardian.surname

我试图在MySQL中转换为十进制,如下所示:

CAST((COUNT(*) * 1.5) AS DECIMAL(2))
CAST((COUNT(*) * 1.5) AS DECIMAL(8,2))
我试图将表中的行数(乘以1.5)转换为一个在点后有两位数字的浮点数

SQL代码:

 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
它会产生一个错误:

#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.
再次尝试,此演员阵容也不起作用:

 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将整数转换为十进制?

来自mysql文档:

在标准SQL中,语法
DECIMAL(M)
相当于
DECIMAL(M,0)

因此,您正在转换为一个包含2个整数和0个十进制数字的数字。请尝试以下方法:

CAST((COUNT(*) * 1.5) AS DECIMAL(12,2)) 

十进制
有两部分:
精度
比例
。因此,部分查询将如下所示:

CAST((COUNT(*) * 1.5) AS DECIMAL(2))
CAST((COUNT(*) * 1.5) AS DECIMAL(8,2))
精度
表示为值存储的有效位数
Scale
表示小数点后可以存储的位数。

MySQL转换为十进制: 将裸整数强制转换为十进制:

select cast(9 as decimal(4,2));       //prints 9.00
select cast(8/5 as decimal(11,4));    //prints 1.6000
select cast(".885" as decimal(11,3));   //prints 0.885
select cast(1.552 as char(10));   //shows "1.552"
将整数8/5转换为十进制:

select cast(9 as decimal(4,2));       //prints 9.00
select cast(8/5 as decimal(11,4));    //prints 1.6000
select cast(".885" as decimal(11,3));   //prints 0.885
select cast(1.552 as char(10));   //shows "1.552"
将字符串转换为十进制:

select cast(9 as decimal(4,2));       //prints 9.00
select cast(8/5 as decimal(11,4));    //prints 1.6000
select cast(".885" as decimal(11,3));   //prints 0.885
select cast(1.552 as char(10));   //shows "1.552"
将两个整型变量转换为十进制

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
将十进制转换回字符串:

select cast(9 as decimal(4,2));       //prints 9.00
select cast(8/5 as decimal(11,4));    //prints 1.6000
select cast(".885" as decimal(11,3));   //prints 0.885
select cast(1.552 as char(10));   //shows "1.552"

我认为出于您的目的,另一种选择是使用round()函数:

select round((10 * 1.5),2) // prints 15.00

你可以试试:

什么样的麻烦?您是否有显示问题的特定错误消息或结果?#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第1行使用“CAST((COUNT(*)1.5)AS DECIMAL(12,2))”附近的正确语法。我查看了文档,不明白为什么我的代码不起作用:SShow让我们看到整个代码,而不仅仅是一行。这很好。
按卫报分组
Guardian
是一张桌子,对吗?是不是应该是《卫报》的
GROUP BY Guardian.id
?谢谢,尽管我已经尝试过了,但刚刚出现了以下错误:#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以了解将“DECIMAL(12,2))用作“Cost”的正确语法@Ben:不要在此处使用单引号:
用作“Cost”
。使用:
作为成本
谢谢,但是当我删除引号时仍然会出现错误。