繁体   English   中英

用逗号将mysql列中的值求和

[英]sum values in mysql column with comma

我是php初学者,正在尝试为mysql db表中的特定列进行聚合,但是此列中有逗号分隔的值,因此结果不正确。 这是表列的示例

第1栏

12,345.67

123,456.78

专栏2

12,345.67

123,456.78

第三栏

12,345.67

123,456.78

专栏4

12,345.67

123,456.78

请在下面找到我的代码,并请教我是否使用解决方案。

<?php 
$query=mysql_query("select * from mytable")or die(mysql_error());
while($row=mysql_fetch_array($query)){
?>
<tr>
<td><?php echo $row['column1'] ?></td>
<td><?php echo $row['column2'] ?></td>
<td><?php echo $row['column3'] ?></td>
<td><?php echo $row['column4'] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
$result = mysql_query("SELECT sum(column1 + column2 + column3 + column4) FROM mytable") or die(mysql_error());
while ($rows = mysql_fetch_array($result)) {
?>
<div>
&nbsp;Total:&nbsp;<?php echo $rows['sum(column1 + column2 + column3 + column4)']; ?></div>
<?php }
?>
<?php }
?>

为了使mysql正确运行聚合,您需要指定将被求和的每个字段,而不是使用SELECT *。

例如<?php $query=mysql_query("select Order_Name, SUM(ORDER_VALUE), SUM(ORDER_COUNT) SUM(ORDER_TAX+ORDER_SHIPPING AS 'fees') from mytable...

如果由于CSV源数据中存在逗号而导致聚合不起作用,则您可能需要将数据库字段设置为正确的类型,如果只希望小数点后两位,则可能为FLOAT或DOUBLE的地方。

SQL不会以这种方式分配和。

更改选择

SELECT sum(column1 + column2 + column3 + column4) FROM mytable

SELECT sum(column1 + column2 + column3 + column4) AS MYSUM FROM mytable

并回显$ row ['MYSUM'];

这将以逗号添加一些值:

set @num1 = '222,3039';
set @num2 = '23,444990';
select REPLACE(@num1,',','')+ REPLACE(@num2,',','')

首先,我强烈建议您在数据库中使用正确的数据类型,但是正如您已经指出的那样,这是不可能的,最简单的方法是在现有循环中将字符串解析为双精度值,并保持运行总计。

$query=mysql_query("select * from mytable")or die(mysql_error());
while($row=mysql_fetch_array($query)){
    ... existing code ...

    #  remove the comma, and cast the string to a double
    $col1 = (double) str_replace(",", "", $row->column1);
    ... $col2, $col3 ...
    $col4 = (double) str_replace(",", "", $row->column4);

    $rowVal = $col1 + $col2 + $col3 + $col4;

    #  keep a running total
    $totalVal += $rowVal;
}

然后,当您以后需要时

#  format the total again as you see fit
echo $totalVal;                             // straight double
echo number_format($totalVal, 2, '.', ','); // thousand separator and decimal point

推荐的

清理数据库结构,以便可以使用格式正确的mysql。 此外,不建议使用这些函数(mysql_query)等。 查看PDO,准备好的语句。

http://php.net/manual/zh-CN/book.pdo.php-一个很好的配置/参考https://phpdelusions.net/pdo-自我宣传为唯一的正确指南,因此绝对值得一看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM