当每行有多个数据用逗号分隔时,如何统计各行的值总数?

时间:2013-08-21 18:33:02

标签: php mysql

我有一个只有1列的数据库表。表中的每一行/单元格都包含许多以逗号分隔的值。一些单元格包含NULL(无值)。我想获得所有行中的数字总数。 (使用php& mysql)


|表|

| 32,33 |

| 21 |

| NULL |

| 45,61,52 |

因此,数据总数应为6,即第1行为2,第2行为1。第4排第3位。

3 个答案:

答案 0 :(得分:3)

值计数将是+1而不是逗号计数。但是如果列没有逗号,则它应该为零。所以这将有效:

SELECT sum(LENGTH('col1') - LENGTH(REPLACE('col1', ',', ''))+1) AS total 
FROM table1 WHERE LENGTH('col1')>0 

答案 1 :(得分:1)

使用php 提取数组中的所有值并使用 explode 获取值的总数。

$i=0;
while(mysqli_num_rows($result) >0)
{
  while($row = mysqli_fetch_array($conn, $result))
  {
    $data_elements = explode(',',$row['data']); // extract all the comma seperated value in array
    $i += count($data_elements); //count them all
  }
}
echo $i; // these are your total number of values

希望它有所帮助:)

答案 2 :(得分:0)

这假定逗号表示一个值

    SELECT sum(LENGTH('field1') - LENGTH(REPLACE('field1', ',', ''))+1) 
AS comma_sum from table1

测试一下,让我知道它是怎么回事