MySQL中的两列乘法
我想获得列fee
和列duration
之间的乘法结果,但是当我做Select duration * fee
时,我得到0
!MySQL中的两列乘法
此外,每列*费用给我0 ...
这是创建表脚本。
delimiter $$
CREATE TABLE `simvoip`
(
`prefix` varchar(45) DEFAULT NULL,
`destination` varchar(45) DEFAULT NULL,
`fee` varchar(45) DEFAULT NULL,
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`dst` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`dstchannel` varchar(80) CHARACTER SET latin1 NOT NULL DEFAULT '',
`duration` varchar(45) DEFAULT '0'
) ENGINE=InnoDB DEFAULT
CHARSET=utf8$$*
为了实现你想要的,你需要将字符串列转换为数字。
试试这个:
SELECT CAST(`duration` AS DECIMAL(10,4)) * CAST(`fee` AS DECIMAL(10,4))
FROM `simvoip`
顺便说一句,你要添加额外的工作,为服务器的值乘以它们之前先转换。为什么不存储为DECIMAL
或Double
?
它不起作用...相同价格:0.0000 – 2012-08-06 08:58:24
您的数据在'fee'和'duration'中的格式如何?检查这个@ sqlfiddle:http://sqlfiddle.com/#!2/0348f/2 – 2012-08-06 09:02:14
奇怪..!有一个地方的问题...感谢约翰帮助 – 2012-08-06 09:07:02
您不能乘以文本值。您需要将它们转换为数字,使用CAST(fee as integer)
或其他。或者,为什么不将数字存储为数字?
欢迎来到Stack Overflow!我们鼓励你[研究你的问题](http://stackoverflow.com/questions/how-to-ask)。如果你已经[尝试了某些东西](http://whathaveyoutried.com/),请将其添加到问题中 - 如果没有,请先研究并尝试您的问题,然后再回来。 – 2012-08-06 08:51:52
您应该先更改列费用和持续时间以输入Double – 2012-08-06 08:52:28
您是否尝试将数字存储为“INT”或“NUMERIC”或“FLOAT”而不是“VARCHAR”? '123'是一个数字,它可以被算术式地删节。 “123”是一个字符串,也可能是“一二三”,不能算术操作。 – MatBailie 2012-08-06 08:54:17