1

我想得到 columnfee和 column之间相乘的结果duration,但是当我这样做时,Select duration * fee我得到了0

此外,每列 * 费用给我 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$$*
4

2 回答 2

3

为了实现您想要的,您需要将字符串列转换为数字。

尝试这个:

SELECT CAST(`duration` AS DECIMAL(10,4)) * CAST(`fee` AS DECIMAL(10,4))
FROM   `simvoip`

顺便说一句,您正在为服务器添加额外的工作,以便在将值相乘之前先转换它们。为什么不存储 asDECIMALDouble

于 2012-08-06T08:53:07.347 回答
1

您不能将文本值相乘。您需要将它们转换为数字,使用CAST(fee as integer)或其他方式。或者,为什么不将数字存储为数字

于 2012-08-06T08:51:58.190 回答