在Mysql中如何计算连续的空白单元格数

时间:2015-02-16 03:39:19

标签: mysql

我想知道如何计算连续空单元格的次数。

例如

|unique|col1|col2|col3|col4|col5|col6|col7|col8|col9|col10|  
|0001  |    |  1 |  1 | 1  |    |    |    |    |  1 |     |  
|0002  |  1 |    |    | 1  | 1  |  1 |    | 1  |    |     |
|0003  |    |  1 |  1 |    |    |    |    |    |    |     |
|0004  |    |    |    | 1  |    |    |    |    |    |     |
|0005  |  1 |    |    | 1  |    |    |  1 |    |    |  1  |
|0006  |    |  1 |  1 | 1  |    |    |    |    |  1 |     |

我想要归还的是0001(6),0002(4),0003(8),004(9),005(6),006(6)

我似乎无法弄清楚所有数据并在php或javascript中处理它。

请帮忙。

3 个答案:

答案 0 :(得分:1)

我使用CASE语句获取空值,然后我得到colcol9的总和。见下文:

SELECT 
      unique,
      (CASE col='' THEN 1 else 0 END
      +
      CASE col1='' THEN 1 else 0 END
      +
      CASE col2='' THEN 1 else 0 END
      +
      CASE col3='' THEN 1 else 0 END
      +
      CASE col4='' THEN 1 else 0 END
      +
      CASE col5='' THEN 1 else 0 END
      +
      CASE col6='' THEN 1 else 0 END
      +
      CASE col7='' THEN 1 else 0 END
      +
      CASE col8='' THEN 1 else 0 END
      +
      CASE col9='' THEN 1 else 0 END) AS CountEmptyCell
FROM YourTable

答案 1 :(得分:0)

您可以使用如下表达式:

select unique, (col1 is null) + (col2 is null) + . . .  + (col10 is null)

MySQL将布尔值视为数值上下文中的整数,其中1表示true,0表示false。因此,这会计算具有NULL值的列数。

这可用于计算任何值。所以,如果通过"空"你的意思是''而不是NULL,那么:

select unique, (col1 = '') + (col2 = '') + . . .  + (col10 = '')

答案 2 :(得分:0)

我希望这会对你有所帮助。

SELECT `unique`,
  SUM(CASE t.`col` IS NULL OR t.`col` = '' THEN 1 ELSE 0 END) AS `col_count`,
  SUM(CASE t.`col1` IS NULL OR t.`col1` = '' THEN 1 ELSE 0 END) AS `col1_count`,
...
...
FROM MYTABLE t

这个答案实际上是由@dnagirl为这个问题(Find the count of EMPTY or NULL columns in a MySQL table)实现的。

请看一下。