列が 1 つしかないデータベース テーブルがあります。表の各行/セルには、コンマで区切られた多数の値が含まれています。一部のセルには NULL (値なし) が含まれています。すべての行の値の合計数を取得したい。(phpとmysqlを使用)
| | 表 | 表
| | 32,33 |
| | 21 |
| | ヌル |
|45,61,52|
したがって、データの総数は 6 になります。つまり、1 行目に 2 つ、2 行目に 1 つ、4 行目に 3 つです。
値のカウントは、コンマのカウントよりも +1 になります。ただし、列にコンマがない場合は、ゼロにする必要があります。したがって、これは機能します:
SELECT sum(LENGTH('col1') - LENGTH(REPLACE('col1', ',', ''))+1) AS total
FROM table1 WHERE LENGTH('col1')>0
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
それが役に立ったことを願っています:)
これは、コンマが 1 つの値を示していることを前提としています
SELECT sum(LENGTH('field1') - LENGTH(REPLACE('field1', ',', ''))+1)
AS comma_sum from table1
これをテストして、どうなるか教えてください