簡體   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