MySQL中的十进制转换
我试图在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
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”
。使用:作为成本
谢谢,但是当我删除引号时仍然会出现错误。