我有一个包含帐户余额的 MySQL 表,该表存储为浮点数,有两位小数,varbinary
列类型(因为值是 AES_ENCRYPTED)。
我意识到将值存储为浮点数并不理想,并且在以后的表中它们不再是,但我还不能对这个遗留表做任何事情,所以需要按原样使用它。
我正在尝试计算所有余额的总和,我可以使用下面的代码来完成:
$s=$dbh->prepare("
SELECT
SUM(AES_DECRYPT(a.acct_balance, '".DBKEY."')) AS tBal
FROM
accounts a
INNER JOIN
coa c
ON
a.acc_id = c.acc_id
WHERE
c.acc_type_id = ?
AND
a.acc_type = 1
");
但是,一些报告还会将余额单独显示为零小数位,如果将它们相加,您通常会得到与上述查询不同的结果,该查询使用两位小数的值计算,即使在将结果转换为零位小数后也是如此。
我想我需要通知 MySQL 在将每个值添加到运行总数之前将其临时转换为零小数位,但我该怎么做呢?
我在报告中显示的值使用以下方法转换:
$val = number_format($val, 0, '', ',');